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()