码迷,mamicode.com
首页 > 系统相关 > 详细

多进程知识补遗整理

时间:2016-07-24 11:50:19      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:

施工中...

一. 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——被修饰的并发

多进程知识补遗整理

标签:

原文地址:http://www.cnblogs.com/nigel-woo/p/5700329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!