我写了一个类似的代码:
indexPath
关注@zilupe有用的评论我得到了以下输出:
import time
import pp
class gener(object):
def __init__(self, n):
self.n = n
def __call__(self):
return self
def __iter__(self):
n = self.n
for i in range(n):
time.sleep(2)
yield i
def gen():
return gener(3)
job_server = pp.Server(4)
job = job_server.submit(
gen,
args=(),
depfuncs=("gener",),
modules=("time",),
)
print job()
如何将<__main__.gener object at 0x7f862dc18a90>
迭代插入并行?
我想和其他功能并行运行。 我需要像类这样的生成器,因为我想从一个相当复杂的程序包的模块中替换其他代码,并且很难重构该代码。
到目前为止,我尝试了许多没有任何成功的事情。 我在这个网站上做了一个相当坚实的调查,但我找不到适合我的正确答案。 有人帮忙吗? 谢谢。
此外:
根据@zilupe有用的评论一些额外的信息:
主要目的是并行化class gener
内的迭代:
class gener
我只创建了 def __iter__(self):
n = self.n
for i in range(n):
time.sleep(2)
yield i
函数,因为我无法弄明白,我怎么能直接在gen()
中使用它。
答案 0 :(得分:2)
这不能回答你的问题,但是你得到了错误,因为depfuncs
必须是函数的元组,而不是字符串 - 行应该是:depfuncs=(gener,),
您是否意识到函数gen
仅创建gener
的实例并且实际上并未调用它?
你想在这里并行化什么 - 在发电机上创建发电机或迭代?如果是迭代,你应该首先创建生成器,将其传递给args中的gen
,然后在gen
中迭代它:
def gen(g):
for _ in g:
pass
job_server.submit(gen,args=(gener(3),),...)