python Queue和multiprocessing的使用,實現進程池負載均衡

廢話不多說,直接上代碼,利用隊列在進程池中通信,實現負載均衡。

# -*- 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))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章