廢話不多說,直接上代碼,利用隊列在進程池中通信,實現負載均衡。
# -*- coding:utf-8 -*-
import multiprocessing
import time
def run(q, number):
# 判斷隊列不爲空
while not q.empty():
print('run_{0}:{1}'.format(number, q.get()))
time.sleep(number)
if __name__ == '__main__':
start = time.clock()
# 創建隊列
manager = multiprocessing.Manager()
q = manager.Queue()
for i in range(100):
q.put({'{}'.format(i): i})
# 創建進程池
pool = multiprocessing.Pool(5)
pool.apply_async(run, (q, 1))
pool.apply_async(run, (q, 2))
pool.apply_async(run, (q, 3))
pool.apply_async(run, (q, 4))
pool.apply_async(run, (q, 5))
pool.close()
pool.join()
end = time.clock()
print('run_time:{0}'.format(end - start))