我正在寻找一种在 Python 中的多个线程之间传递值(例如整数、数组)的方法。我知道这个任务可以通过使用 Queue 模块来完成,但我对 python 或这个特定模块都不是很熟悉。
我有以下场景:每个线程需要根据自己的数据或来自其他线程的数据做一些计算。此外,每个线程都知道其他线程保存特定作业所需的数据(所有线程都有一个所有线程的数组,因此任何线程都知道对于任务 X,他需要从特定线程获取数据(行,列)从那个数组)。
如何使用 Queue 模块或其他技术来完成线程之间的这种通信(Queue 模块似乎是这项工作的正确选择)。
非常感谢任何帮助。非常感谢。
最佳答案
使用队列
通常,队列用于具有一堆从队列中获取其工作的工作线程的场景。空闲线程正在队列中等待新作业放入其中。然后该作业由一个线程执行,而所有剩余的线程都在等待下一个作业。如果发布的作业多于可用线程,则队列开始填满。
正如您所描述的那样,这不适用于您的场景。也许您可以直接读取数据而不将其放入队列中。如果你写在共享数据结构中,你可以考虑锁定策略。
一般来说,您应该阅读并行编程。这些概念与语言完全无关。然后,您可以阅读有关 Python 线程的教程。互联网上有大量关于这两个主题的 Material 。
编辑:
使用 threading.Event 进行线程间通信
两个线程之间最简单的通信方式是 threading.Event
.该事件可以设置为真或假。通常,一个线程正在设置事件,另一个线程检查事件的值并采取相应的行动。例如,该事件可能表明有新的事情要做。指示线程首先填充即将到来的任务所需的数据结构,然后将事件设置为真。另一个等待事件的线程在事件为真后被激活。随后,它读出数据结构并执行任务。
关于python - 在 Python 中使用队列模块在线程之间传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15524627/