使用多处理从其他进程获取数据
Get Data from Other Processes using Multiprocessing
(语言是 Python 3)
我正在用模块 multiprocessing
编写程序并使用 Pool
。我需要一些在所有进程之间共享的变量。父进程将初始化此变量并将其作为参数传递给 p.map()
。我希望子进程更改此变量。这样做的目的是因为子进程工作的第一部分应该并行完成(不需要任何其他进程数据的计算工作)。但是,进程工作的第二部分需要按顺序完成,一个进程接一个进程,因为它们正在写入文件并且该文件的内容应该是有序的。我希望每个过程都等到其他过程完成后再继续。我会用变量记录整个程序的"progress",例如当第一个进程完成写入文件时,它会将变量递增一个。我希望这是下一个进程开始写入文件的信号。但是我需要某种 waituntil()
函数来让进程等待 Value
变量指示它们 "turn" 写入文件。
这是我的两个问题:
我需要一个子进程可以编辑的变量,子进程实际上可以得到那个变量的值。我应该使用什么类型的变量?我应该使用 Value
、Manager
还是其他?
我需要进程等待,直到上述变量等于某个值,表示轮到它们写入文件。我可以使用任何类型的 waituntil()
函数吗?
(语言是 Python 3)
我正在用模块 multiprocessing
编写程序并使用 Pool
。我需要一些在所有进程之间共享的变量。父进程将初始化此变量并将其作为参数传递给 p.map()
。我希望子进程更改此变量。这样做的目的是因为子进程工作的第一部分应该并行完成(不需要任何其他进程数据的计算工作)。但是,进程工作的第二部分需要按顺序完成,一个进程接一个进程,因为它们正在写入文件并且该文件的内容应该是有序的。我希望每个过程都等到其他过程完成后再继续。我会用变量记录整个程序的"progress",例如当第一个进程完成写入文件时,它会将变量递增一个。我希望这是下一个进程开始写入文件的信号。但是我需要某种 waituntil()
函数来让进程等待 Value
变量指示它们 "turn" 写入文件。
这是我的两个问题:
我需要一个子进程可以编辑的变量,子进程实际上可以得到那个变量的值。我应该使用什么类型的变量?我应该使用
Value
、Manager
还是其他?我需要进程等待,直到上述变量等于某个值,表示轮到它们写入文件。我可以使用任何类型的
waituntil()
函数吗?