我的代码经过简化,如下所示:
run = functools.partial(run, grep=options.grep, print_only=options.print_only, force=options.force)
if not options.single and not options.print_only and options.n > 0:
pool = multiprocessing.Pool(options.n)
Map = pool.map
else: Map = map
for f in args:
with open(f) as fh: Map(run, fh)
try:
pool.close()
pool.join()
except NameError: pass
当我在单进程模式下运行它时效果很好,但失败并出现这样的错误
TypeError: type 'partial' takes at least one argument
通过多处理模块与长调用堆栈混合在一起。这是怎么回事?
我正在使用 python 2.6.1。
谷歌告诉我这是一个Python 中的错误 http://bugs.python.org/issue5228;显然已在 Py3k 中修复。据说是由于partial
不可腌制。
有一个解决方法 http://web.archive.org/web/20150915201931/http://techguyinmidtown.com/2009/01/23/hack-for-functoolspartial-and-multiprocessing/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)