functools.partial不适用于multiprocessing.Pool.map吗?

pyt*_*hor 8 python multiprocessing

我有简化的代码,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

当我在单进程模式下运行它时工作正常,但是失败并出现这样的错误

TypeError: type 'partial' takes at least one argument
Run Code Online (Sandbox Code Playgroud)

通过多处理模块与长调用栈混合在一起.这是怎么回事?

我正在使用python 2.6.1.

Kat*_*iel 4

Google 告诉我这是Python 中的一个错误;显然已在 Py3k 中修复。据说是因为partial不可以腌制。

有一个解决方法