编程语言
首页 > 编程语言> > 为什么并行Python会按其方式工作?

为什么并行Python会按其方式工作?

作者:互联网

在Parallel 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()

解决方法:

pp按照其工作方式运行的原因是,它为每个工作人员创建了Python解释器的新实例,而该实例完全独立于之前或之后运行的任何内容.这样可以确保没有意外的副作用,例如在工作进程中活跃的__future__导入.问题在于,这样做会使事情变得更复杂,而以我对pp的经验来看,它并不是特别可靠. pp确实试图使用户更轻松一些,但是这样做似乎带来了比它要解决的问题更多的问题.

如果我从一开始就编写旨在在集群上使用的代码,那么我可能最终会使用pp,但是我发现改编现有代码以与pp一起使用是一场噩梦.

标签:parallel-processing,python,parallel-python
来源: https://codeday.me/bug/20191209/2095793.html