Python多进程如何获取函数的返回值

请问我用Process实现多进程了,但是那个函数会返回一个值,我如何获得,比如这样

def test(name):
    return "hello," + name

p = Process(target=test, args=("world",))
p.start()
p.join()

我如何获得test的返回值

阅读 21.2k
3 个回答
p = multiprocessing.Pool(1)
rslt = p.map(test,('world',))
print rslt

没有办法直接实现你的需求,但是,你可以用共享变量的方法实现,比如:

def worker(procnum, return_dict):
    '''worker function'''
    print str(procnum) + ' represent!'
    return_dict[procnum] = procnum


if __name__ == '__main__':
    manager = Manager()
    return_dict = manager.dict()
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,return_dict))
        jobs.append(p)
        p.start()

    for proc in jobs:
        proc.join()
    print return_dict.values()

搜一下进程间通信

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏