使用多处理从其他进程获取数据

Get Data from Other Processes using Multiprocessing

(语言是 Python 3)

我正在用模块 multiprocessing 编写程序并使用 Pool。我需要一些在所有进程之间共享的变量。父进程将初始化此变量并将其作为参数传递给 p.map()。我希望子进程更改此变量。这样做的目的是因为子进程工作的第一部分应该并行完成(不需要任何其他进程数据的计算工作)。但是,进程工作的第二部分需要按顺序完成,一个进程接一个进程,因为它们正在写入文件并且该文件的内容应该是有序的。我希望每个过程都等到其他过程完成后再继续。我会用变量记录整个程序的"progress",例如当第一个进程完成写入文件时,它会将变量递增一个。我希望这是下一个进程开始写入文件的信号。但是我需要某种 waituntil() 函数来让进程等待 Value 变量指示它们 "turn" 写入文件。

这是我的两个问题:

  1. 我需要一个子进程可以编辑的变量,子进程实际上可以得到那个变量的值。我应该使用什么类型的变量?我应该使用 ValueManager 还是其他?

  2. 我需要进程等待,直到上述变量等于某个值,表示轮到它们写入文件。我可以使用任何类型的 waituntil() 函数吗?

您要查找的内容称为同步。 有多种不同的同步原语可供选择。

您永远不应该尝试自己编写同步原语,因为要正确地做到这一点非常重要!

在您的情况下,Event or a Condition 可能是合适的。