在 Multiprocessing.Process 中访问函数的返回值
在使用 Python 的多处理中,获取传递给多处理的函数的返回值。进程可能很棘手,因为它不直接存储在 Process 对象中。
考虑以下内容示例:
import multiprocessing def worker(procnum): '''worker function''' print(str(procnum) + ' represent!') return procnum if __name__ == '__main__': jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i,)) jobs.append(p) p.start() for proc in jobs: proc.join() print(jobs)
虽然此代码打印每个工作进程的输出,但我们无法直接访问它们的返回值。
要检索返回值,我们可以使用共享变量。在以下修改后的代码中,多处理模块中的 Manager() 用于创建共享字典:
import multiprocessing def worker(procnum, return_dict): """worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum if __name__ == "__main__": manager = multiprocessing.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())
这里,每个工作进程用其返回值更新共享字典 return_dict 。然后主进程可以从共享字典中访问这些值。
以上是如何从 Python 中的 Multiprocessing.Process 函数检索返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!