我怎么能解决python - 并行问题?

时间:2015-06-28 17:02:39

标签: python parallel-processing

我写了一个类似的代码:

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()中使用它。

1 个答案:

答案 0 :(得分:2)

这不能回答你的问题,但是你得到了错误,因为depfuncs必须是函数的元组,而不是字符串 - 行应该是:depfuncs=(gener,),

您是否意识到函数gen仅创建gener的实例并且实际上并未调用它?

你想在这里并行化什么 - 在发电机上创建发电机或迭代?如果是迭代,你应该首先创建生成器,将其传递给args中的gen,然后在gen中迭代它:

def gen(g):
    for _ in g:
        pass

job_server.submit(gen,args=(gener(3),),...)