[英]Importable `multiprocessing.Pool` function
这可能很简单,我只是找不到合适的问题。
如果我用multiprocessing.Pool
做一个独立的脚本,我知道我应该这样做:
def foo(x):
return x**2
if __name__ == '__main__':
with Pool(n_jobs) as p:
p.map(foo, list_of_inputs)
但是,如果我想使其成为可导入函数,则假定__name__
将不再是'__main__'
。 这样做是否安全:
def __foo(x):
return x**2
def bar(list_of_inputs, n_jobs):
with Pool(n_jobs) as p:
out = p.map(__foo, list_of_inputs)
return out
###################################################
from test.py import bar
baz = bar(mylist, 4)
我假设是这样,因为bar
将仅在调用进程中被调用,然后在子进程中仅foo
将被调用,但是我只是想知道这通常是否是一种安全的方法。
我认为您的代码在python3和python2中对我来说没有问题,如果我不对Pool使用with
语句,我认为这没有问题。 我认为,这是使用multiprocessing
一种安全方法,我不明白为什么您会遇到这种无限的悬挂 。 您正在使用哪个版本的Python?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.