提问人:Valuex 提问时间:9/25/2019 最后编辑:Bill PValuex 更新时间:9/25/2019 访问量:100
Python 在使用多处理和 itertools 时传递多个值
Python pass multiple values while using multiprocessing and itertools
问:
我正在尝试使用多处理对 itertools 收集的组合进行一些计算。
这是我正在做的事情的简单版本:
import multiprocessing
import itertools
def func(comb):
x=list(comb)[0]
y=zs[x]
return x+y
if __name__ == '__main__':
cores=multiprocessing.cpu_count()
pool=multiprocessing.Pool(processes=cores)
xs=range(50)
ys=range(50)
zs=[iy+1 for iy in ys]
for r in pool.imap(func,itertools.product(xs,ys)):
print(r)
但它提出了一个错误:
NameError:未定义名称“zs”
使用时如何传递?zs
func
itertools.product
非常感谢您的任何评论。
答:
2赞
Dev Khadka
9/25/2019
#1
您可以使用分部函数来设置函数的部分参数,如下所示
from functools import partial
def func(comb, zs):
print(comb, zs)
pfunc = partial(func, zs="abc")
pfunc("123")
# 123 abc
评论
zs
func
global zs
func
zs