context是class multiprocessing.pool.Pool构造函数中的可选参数。文档只说:
context可用于指定用于启动辅助进程的上下文。通常,使用函数multiprocessing.Pool()或上下文对象的Pool()方法创建池。在这两种情况下,上下文都是适当设置的。
它没有说明“上下文对象”是什么,为什么class Pool构造函数需要它,以及在上述场景中它“被适当设置”意味着什么。
发布于 2017-05-06 09:27:13
根据平台的不同,多处理支持启动进程的三种方法。这些启动方法是:
要选择一个start方法,您可以在主模块的set_start_method子句中使用if __name__ == '__main__' ()。例如:
import multiprocessing as mp
def foo(q):
q.put('hello')
if __name__ == '__main__':
mp.set_start_method('spawn')
q = mp.Queue()
p = mp.Process(target=foo, args=(q,))
p.start()
print(q.get())
p.join()或者,您可以使用get_context()获取上下文对象。上下文对象具有与多处理模块相同的API,并允许在同一个程序中使用多个启动方法。
import multiprocessing as mp
def foo(q):
q.put('hello')
if __name__ == '__main__':
ctx = mp.get_context('spawn')
q = ctx.Queue()
p = ctx.Process(target=foo, args=(q,))
p.start()
print(q.get())
p.join()这就是上下文对象的来源!
https://stackoverflow.com/questions/43818519
复制相似问题