多任务中进程、线程、协程
2018-09-29 03:59:34来源:博客园 阅读 ()
为什么使用多任务?有什么好处?
答:提高程序执行效率,实现同一时刻可以做二个以上的事情。
啦啦啦。。。重点来了
并行:任务数大于CPU核数,每个CPU就要执行多个任务,那肯定忙不过来,多个任务执行就需要排队等待上一任务执行完,才能执行下一任务。
并发:任务数小于或等于CPU核数,每个CPU就只需只需一个任务(小于时,有的CPU不执行任务)。
1,线程:CPU调度的最小单位。我的理解是CPU执行代码的那一条线索。
创建线程:
1 import threading 2 3 4 def f1(): 5 for i in range(100): 6 print('线程1:{}'.format(i)) 7 8 9 def f2(): 10 for i in range(100): 11 print('线程2:{}'.format(i)) 12 13 14 if __name__ == '__main__': 15 t1 = threading.Thread(target=f1) 16 t2 = threading.Thread(target=f2) 17 t1.start() 18 t2.start()
上述结果:线程是相互竞争资源的。
2,进程:CPU分配资源的最小单位,我的理解是程序运行起来,代码+运行用到的资源为进程。进程有三个状态:就绪态(满足一切条件等待CPU执行),等待态(阻塞等待如:input(),accept(),yield等),执行态(CPU正在执行其功能)
创建进程:
1 from multiprocessing import Process 2 3 4 def f1(msg): 5 for i in range(100): 6 print(msg + ':{}'.format(i)) 7 8 9 def f2(msg): 10 for i in range(100): 11 print(msg + ':{}'.format(i)) 12 13 14 if __name__ == '__main__': 15 p1 = Process(target=f1, args=('线程1',)) 16 p2 = Process(target=f2, args=('线程2',)) 17 p1.start() 18 p2.start()
3,协程:协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。
创建协程:
1 import time 2 3 4 def fn1(): 5 while True: 6 print("----任务1-----") 7 yield 8 time.sleep(1) 9 10 11 def fn2(): 12 while True: 13 print("----任务2-----") 14 yield 15 16 17 def main(): 18 work1 = fn1() 19 work2 = fn2() 20 21 while True: 22 next(work1) 23 next(work2) 24 25 26 if __name__ == "__main__": 27 main()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- python多线程同步实例分析 2019-08-13
- xpath+多进程爬取八零电子书百合之恋分类下所有小说。 2019-08-13
- xpath+多进程爬取全书网纯爱耽美类别的所有小说。 2019-08-13
- 进程相关 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash