在工作中,我们经常会用到多进程来处理数据,从而提高工作效率。下文是一个多进程模板,可以按照具体需求进行修改,欢迎使用~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| from multiprocessing import Pool
if __name__ == '__main__': from multiprocessing import Pool import os import time
def func(data): print(f'进程{os.getpid()}开始处理数据{data}') time.sleep(1) print(f'进程{os.getpid()}结束处理数据{data}')
def split_data(data_list, cpu_worker_num): ''' 将数据列表分成cpu_worker_num份,例如cpu_worker_num=3,data_list=[1,2,3,4,5,6,7,8,9,10],返回[[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
''' chunk_size = int(len(data_list)/cpu_worker_num) + 1 return [data_list[x:x + chunk_size] for x in range(0, len(data_list), chunk_size)]
if __name__ == '__main__': cpu_worker_num = 8 data_list = [1, 2, 3, 4, 5, 6, 7, 8] pool = Pool(cpu_worker_num) pool_data_list = split_data(data_list, cpu_worker_num) pool.map(func, pool_data_list) pool.close() pool.join()
|