施工中...
一. multiprocessing.Pool相关补遗
1. map:
在使用进程池的时候,我们一般使用的是apply和apply_async方法来申请进程执行任务;其实还有另外一系列的方法map用于在对一个序列里的元素,
进行相同的函数调用时使用Pool来实现并发。其使用的方法和內建函数map()非常的相似,只不过变成了用线程池来调用,示例如下:
1 import multiprocessing 2 3 def func1(x): 4 print (x * x) 5 6 if __name__ == ‘__main__‘: 7 pool = multiprocessing.Pool(multiprocessing.cpu_count()) 8 i_list = range(8) 9 pool.map(func1, i_list)
运行结果:
我们可以看到结果符合预期,把序列中每个元素都使用func1函数处理了;此外我们也能在运行时候发现结果是一个个打印的,说明map是阻塞执行的,类似apply方法,所以与之相对的,map也有非阻塞的版本。
2. map_async方法
map_async方法就是map方法的非阻塞版本,用法上也和apply_async很像,需要在close进程池以后再join来等待进程都结束;此外也能接受回调函数,示例如下:
3. imap和
2. multiprocessing.cpu_count()
3. threading.currentThread()
二. 扩充:DECO——被修饰的并发
时间: 2024-11-05 14:57:43