Python multiprocessing 多進程示例

import os
import multiprocessing


def processing():
    process_num = multiprocessing.cpu_count() - 1  # 設置進程數
    result_list = []
    pool = multiprocessing.Pool(processes=process_num)  # 新建Pool,之後Pool不變,處理的任務一直在更新
    task_list = [1,2,3,4,5,6,23,8,9]  # 任務序列,一般是待處理的數據或索引,總之子進程能找到自己處理的任務即可
    start = 0
    while start < len(task_list):
        end = start + 3  # 假設一個子進程處理3個
        result_list.append(pool.apply_async(sub_processing,
                                            (task_list[start: end], start)))
        start = end
    pool.close()
    pool.join()

  
    for result in result_list:
        r = result.get(timeout=10)
        print(r)


def sub_processing(task_list, start):
    #  your code
    print('PID:', os.getpid(), 'Finished!')
    return 'start = {}, task list: {}, sum = {}'.format(start, task_list, sum(task_list))


# for test
processing()

 

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