1

我正在尝试通过使用多处理来加速文件归档。

pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size,maxtasksperchild=1)
for file_name in files :
    p_output=pool.map(gzip_file,[file_name])
pool.close()
pool.join()

函数gzip_file执行简单的 gzip ,记录它是否成功。

我的问题是,在此脚本的某些运行期间,它会无限期地挂起,并且机器上没有负载。调用pool.map每个文件是错误的吗?

更新: 我已经切换到 map_async但这没有帮助。当脚本挂起时,现在它一直在发生,子进程变成了僵尸。这真的很奇怪。

解决方案:此问题是 python 2.7.2 中的一个错误,与 maxtasksperchild池参数有关。一旦我删除了这个参数并将其保留为默认值,一切都按预期工作。此线程中的更多详细信息

4

0 回答 0