Python - 多处理pool.map():进程不做任何事情

时间:2016-09-05 12:31:13

标签: python dictionary parallel-processing multiprocessing pool

我正在尝试使用python多处理库来平行我正在处理的任务:

import multiprocessing as MP

def myFunction((x,y,z)):
    ...create a sqlite3 database specific to x,y,z
    ...write to the database (one DB per process)

y = 'somestring'
z = <large read-only global dictionary to be shared>

jobs = []
for x in X:
    jobs.append((x,y,z,))

pool = MP.Pool(processes=16)
pool.map(myFunction,jobs)
pool.close()
pool.join()

htop所示,启动了16个进程,但没有返回错误,没有写入文件,也没有使用CPU。

myFunction中是否有错误未报告给STDOUT并阻止执行?

可能从在后台运行的bash脚本调用python脚本是相关的。

1 个答案:

答案 0 :(得分:1)

这里学到的教训是遵循其中一条评论中建议的策略,并使用multiprocessing.dummy直到一切正常。

至少在我的情况下,错误是不可见的,否则进程仍在运行,好像什么也没发生。