1.multiprocessing.Pool用于多进程,multiprocessing.dummy.Pool用于多线程。多线程是假的并行,实际上还是串行。如果是计算占比比较大,用多进程;如果是I/O占比比较大,用多线程。
2.multiprocessing.Pool包含四个方法。其中:map、map_async用于同一个函数的多线程运行,参数可以用列表;apply、apply_async用于不同函数的多线程运行,但参数必须用元祖。
3.Pool可以不指定进程数量,可以实现动态的进程数量。如pool=Pool(5)可以用pool=Pool()代替。
4.如果是同一个函数的多进程并行,用如下代码:
1 from multiprocessing.dummy import Pool 2 pool = Pool() 3 my_fetchall = pool.map(func_name, paremeter_list) 4 pool.close() 5 pool.join()
5.如果是不同函数的多进程并行,用如下代码:
1 from multiprocessing import Pool 2 # 并行的数据准备 3 arg_tup = (my_date, dwmc) 4 fun_list = [get_xtxl, get_dyhd, get_yjzhlyl, get_jbzq, get_tjl, get_gkhgl, get_phhgl] 5 6 # 创建进程池 7 pool = Pool() 8 9 # 逐个塞入进程 10 pool_list = [pool.apply_async(item, arg_tup) for item in fun_list] 11 12 # 关闭进程池 13 pool.close() 14 pool.join() 15 16 # 逐个获取结果 17 [my_xtxl, my_dyhd, my_yjzhlyl, my_jbzq, my_tjl, my_gkhgl, my_phhgl] = [item.get() for item in pool_list]
6.参考内容:https://www.cnblogs.com/ailiailan/p/11850710.html
原文:https://www.cnblogs.com/xinyangq/p/14046070.html