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)