我想并行化一些python代码IPython.parallel
并遇到问题,即IPython在执行并行函数时检测到闭包。
我的环境通过以下方式初始化:
from IPython.parallel import Client
c = Client()
v = c.direct_view()
qs = [1,2,3,4]
函数定义为:
@v.parallel(block=True)
def pbands(qs):
i = 1 # This should normally be a loop variable inside the function
valar = [i for j in range(3)]
return 0
执行此功能为
pbands(qs)
产生错误
ValueError: Sorry, cannot pickle code objects with closures
将列表推导式替换i
为文字数字 orj
不会产生错误,但这不是合适的解决方案,因为在实际代码i
中将是一个循环变量。
有没有办法让这个列表理解工作?