python多进程将字典从子进程传回父进程
我有一个子进程函数(叫做parseContents),它是通过以下代码被调用的:
def main():
p = Process(target=parseContents, args=(event.name,))
p.start()
p.join()
我想利用多进程模块和队列方法,怎么才能把一个变量从parseContents函数传回主程序,以便在p.join()这一行之后使用呢?
我听说我应该使用:
from multiprocessing import Queue
queue = Queue()
queue.put( myVar ) #obviously this would be inside parseContents()
print queue.get( myVar ) #obviously this would be inside main()
我需要在主程序中调用parseContents函数后,把'queue'这个变量/实例传递给它吗?这样子进程才能知道这个队列吗?
在上面的main():
部分,父进程和子进程之间正确实现多进程队列的方式是什么呢?
1 个回答
1
要以这种方式使用队列,你需要在main()
函数里创建一个队列,然后把它作为参数传递给parseContents
。这样一来,你就可以在正确的位置使用你已有的代码,把子进程中的数据传递给父进程。
Python的文档提醒说,如果队列里还有东西,千万不要试图结束子进程,所以在调用join
之前,确保把队列里的所有项目都取出来。其实,你可以完全不调用join
就能运行代码,因为queue.get
会一直等到队列里有东西为止。