multiprocessing をつかってジョブの並列化
スクレイピングなどする場合、アクセスする時間が律速になるので(CPUに付加がかからない)、
ジョブを複数に分割したいケースがある。
ジョブを分割して、その戻り値のリストを結合するプログラム。
Poolとmapを使ってもいいのだが、あえて、Queueを使う。
from multiprocessing import Process,Pool,Queue def return_array(queue,start,end): a = [] for i in range(start,end): a.append(i) queue.put(a) if __name__=='__main__': jobs = [] jobs_num=10 code_num=50 queue = Queue() for i in range(jobs_num): jobs.append(Process(target=return_array, args=(queue,i*code_num,(i+1)*code_num))) for j in jobs: j.start() a = [] for j in jobs: a.extend(queue.get()) for j in jobs: j.join() print(a)