我需要并行运行 100 个查询,但我没有足够的资源,所以我创建了一个包含 20 个子列表的列表,每个子列表包含 5 个进程。
现在我想连续运行作业列表。我解释更多:当前五个查询完成后,将启动后五个查询,依此类推......
我这样做了:
jobs_list = []
for sublist in list_all:
jobs = []
for cd in sublist:
process = multiprocessing.Process(target=calc_zio, args=(cd,))
jobs.append(process)
jobs_list.append(jobs)
for l in jobs_list:
for j in l:
j.start()
for l in jobs_list:
for j in l:
j.join()
但我以 100% 的 CPU 运行
我错在哪里?
谢谢!
您需要
在开始下一个之前加入子列表。
jobs_list = []
for sublist in list_all:
jobs = []
for cd in sublist:
process = multiprocessing.Process(target=calc_zio, args=(cd,))
jobs.append(process)
jobs_list.append(jobs)
for l in jobs_list:
for j in l:
j.start()
for j in l:
j.join()