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

我有代码,简化了下来,看起来像这样:

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。


Google告诉我这是Python中的一个bug。 显然固定在Py3k中。 这应该是由于partial不可挑选。

有一个解决方法。

链接地址: http://www.djcxy.com/p/47759.html

上一篇: Does functools.partial not work with multiprocessing.Pool.map?

下一篇: Convert a class to an extension