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

老男孩学习DAY11-1 进程、进程池、协程

时间:2016-07-23 17:58:11      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

python 进程

优点:可以处理大量的并发操作,使用IO计算型

缺点:由于进程之间的数据都是独立,所以创建一个进程,就得消耗一份内存 (进程和cpu核数相同的情况最好)

Process :进程 (让我想到了40个人,要烧40壶水,要弄40个炉子,但是效率高)

技术分享

进程中有 join (2)   阻塞住啦,最多阻塞2秒钟;demaon(true)  可以设置不阻塞,直接运行。

都说进程之间的数据是独立,那么我们你能将进程之间的数据共享吗,聪明的人类,当然可以,那就用到了mange和array

arrary 这个东西 就是将一个列表转换成一个特殊的数据类型(数组),manage 方式数据共享

from multiprocessing import Process
from multiprocessing import Manager
import time
if __name__ == __main__:
    manage = Manager()
    dic = manage.list()
    def foo(i):
        dic[i]=100+i
        print (dic.values())
    for i in range(10):
        p = Process(target=foo,args=(i,))
        p.start()
    print(dic.values())

技术分享

这个思路太混啦,不过老师说,这个进程数据共享用的不多,n

进程池

进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如歌进程池中没有可供使用的进程池,那么程序就会等待,直到进程池有可用的进程为止

进程池有两个方法:

  • apply(同步)
  • apply_async(异步)

技术分享

技术分享

 

 

协程

线程和进程的操作是由程序触发接口,最后的执行者是系统,协程的操作则是程序员

协程存在的意义;对于多线程的应用,cpu通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续)。协程,则只使用一个线程,在一个线程中规定某个代码块执行顺序

协程的使用场景:当程序中存在大量不需要CPU的操作时(IO)

 

老男孩学习DAY11-1 进程、进程池、协程

标签:

原文地址:http://www.cnblogs.com/05-xiaoyi/p/5698993.html

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