繁体   English   中英

python / multiprocessing.pool中的错误?

[英]Bug in python/multiprocessing.pool?

(这是使用Python 2.7)

我找到了类似的链接,但没有找到与我所拥有的完全相同的问题。 这个程序挂在map_async上,永远不会完成,我可以看到Python进程被创建但它永远不会完成:

import multiprocessing


def main():
    PROCESSES = 4
    print 'Creating pool with %d processes\n' % PROCESSES
    pool = multiprocessing.Pool(PROCESSES)
    r = pool.map_async(pow3, range(10))
    r.wait()


def pow3(x):
    try:
        return x**3
    except:
        print('%s: %s' % (x, traceback.format_exc()))

if __name__ == '__main__':
    main()

它工作正常。
你是在交互式翻译中运行吗?
请参阅文档中的此说明:

注意此程序包中的功能要求模块可由子项导入。 这在编程指南中有所涉及,但值得在此指出。 这意味着某些示例(例如multiprocessing.Pool示例)在交互式解释器中不起作用。 例如:

>>> from multiprocessing import Pool   
>>> p = Pool(5)   

>>> def f(x):   
...     return x*x  

>>> p.map(f, [1,2,3])  

进程PoolWorker-1:
进程PoolWorker-2:
进程PoolWorker-3:

Traceback(最近一次调用最后一次):

AttributeError:'module'对象没有属性'f'
AttributeError:'module'对象没有属性'f'
AttributeError:'module'对象没有属性'f'

(如果你尝试这个,它实际上会以半随机的方式输出三个完整的回溯,然后你可能不得不以某种方式停止主进程。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM