我正在尝试使用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脚本是相关的。
答案 0 :(得分:1)
这里学到的教训是遵循其中一条评论中建议的策略,并使用multiprocessing.dummy
直到一切正常。
至少在我的情况下,错误是不可见的,否则进程仍在运行,好像什么也没发生。