python - functools.partial 是否不适用于 multiprocessing.Pool.map?

标签 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

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

TypeError: type 'partial' takes at least one argument

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

我正在使用 python 2.6.1。

最佳答案

Google 告诉我这是一个 bug in Python ;显然在 Py3k 中已修复。这应该是由于 partial 不是可腌制的。

有一个workaround .

关于python - functools.partial 是否不适用于 multiprocessing.Pool.map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637847/

相关文章:

python - 我们如何使用 python 程序访问 Coq 或 Isabelle/HOL?

python - 如何在 Paramiko 服务器中实现端口转发?

python - 错误 : No matching distribution found for cryptography==3. 2.1

python - 为什么必须扩展和附加 __init__ ?

python - 将 multiprocessing.Queue 转储到列表中

python - 如何从python中sklearn中的cross_val_predict获取排序概率和名称

python:使用多处理时访问变量的问题

process - 为什么您需要特别了解每个处理器?

python - 使用 Python 的 multiprocessing.Pool 和 map_asynch,如何获取有关工作人员的信息?

Python 多处理/EM