为什么Parallel Python以它的方式工作?

时间:2010-11-02 01:17:36

标签: python parallel-processing parallel-python

在并行Python中,为什么有必要在该作业提交调用中包装传递的函数以及变量和命名空间所需的任何模块 - 如何保留模块级“全局”变量? (如果就是这样的话)

提交功能:

submit(self, func, args=(), depfuncs=(), modules=(), callback=None, callbackargs=(),group='default', globals=None)
    Submits function to the execution queue

    func - function to be executed
    args - tuple with arguments of the 'func'
    depfuncs - tuple with functions which might be called from 'func'
    modules - tuple with module names to import
    callback - callback function which will be called with argument 
        list equal to callbackargs+(result,) 
        as soon as calculation is done
    callbackargs - additional arguments for callback function
    group - job group, is used when wait(group) is called to wait for
    jobs in a given group to finish
    globals - dictionary from which all modules, functions and classes
    will be imported, for instance: globals=globals()

1 个答案:

答案 0 :(得分:3)

pp的工作原理是,它为每个工作者创建一个Python解释器的新实例,它完全独立于之前或之后运行的任何事物。这可确保不会出现意外的副作用,例如__future__导入在工作进程中处于活动状态。这样做的问题在于它使事情变得更加复杂,而且根据我对pp的体验,并不是特别健壮。 pp 确实试图让用户更容易一些事情,但似乎引入的问题多于它在努力实现这一目标时所解决的问题。

如果我从一开始就编写专为在群集上使用而设计的代码,我可能最终会使用pp,但我发现调整现有代码以使用pp是一场噩梦。