2

我正在寻找一种在 Python 中的多个线程之间传递值(例如整数、数组)的方法。我知道这个任务可以通过使用 Queue 模块来完成,但我对 python 或这个特定模块都不是很熟悉。

我有以下场景:每个线程需要根据自己的数据或来自其他线程的数据做一些计算。此外,每个线程都知道其他线程保存特定作业所需的数据(所有线程都有一个所有线程的数组,因此任何线程都知道对于任务 X,他需要从特定线程获取数据(行,列)从那个数组)。

如何使用 Queue 模块或其他技术来完成线程之间的这种通信(Queue 模块似乎是这项工作的正确选择)。非常感谢任何帮助。非常感谢。

4

1 回答 1

2

使用队列

通常,队列用于具有一堆从队列中获取其工作的工作线程的场景。空闲线程正在队列中等待新作业放入其中。然后该作业由一个线程执行,而所有剩余的线程都在等待下一个作业。如果发布的作业多于可用线程,则队列开始填满。

正如您所描述的那样,这不适用于您的场景。也许您可以直接读取数据而不将其放入队列中。如果你写在共享数据结构中,你可以考虑锁定策略。

一般来说,您应该阅读并行编程。这些概念与语言完全无关。然后,您可以阅读有关 Python 线程的教程。互联网上有大量关于这两个主题的材料。

编辑:

使用 threading.Event 进行线程间通信

在两个线程之间进行通信的最简单方法是threading.Event. 该事件可以设置为真或假。通常,一个线程正在设置事件,另一个线程检查事件的值并采取相应的行动。例如,该事件可能表明有新的事情要做。指示线程首先填充即将到来的任务所需的数据结构,然后将事件设置为真。在事件为真后,另一个等待事件的线程被激活。随后,它读出数据结构并执行任务。

于 2013-03-20T13:23:22.537 回答