我有一个繁重的批处理工作,所以我把它切成 30 个(我的 CPU 数量)小批量,我做了 30 个multiprocessing.Process来做它们(出于某种原因我没有使用multiprocessing.Pool)。对于返回值,我使用了 30 multiprocessing.Queue。这是我的代码的概述:
def minibatch(q, data, i):
do_some_work_data_i
q.put(return_value)
if __name__ == '__main__':
q1 = Queue()
p1 = Process(target=minibatch, args=(q1, data[1], 1))
p1.start()
q2 = Queue()
p2 = Process(target=minibatch, args=(q2, data[2], 2))
p2.start()
first_return_value = q1.get()
second_return_value = q2.get()
p1.join()
p2.join()
现在,我发现它太慢了!如果每个小批量需要 10 秒,我希望我的代码运行大约需要 10 秒,但它需要更多。那我应该怎么做呢?
森栏
相关分类