03 2021 档案

摘要:一、单线程下实现并发,使用yield并发 = 切换 + 保存状态1、yield可以保存任务运行状态,与操作系统的保存状态很像,但是yield是代码级别控制的,更轻量级2、send可以把一个函数的结果传给另外一个函数,以此实现单线程内程序之间的切换单纯的切换反而会降低运行效率 # 串行执行 impor 阅读全文
posted @ 2021-03-05 17:08 cheng4632 阅读(63) 评论(0) 推荐(0) 编辑
摘要:提交任务的方式:同步调用:提交任务后,就在原地等待,等待任务执行完毕,拿到任务的返回值,才能继续执行下一行代码,导致程序串行异步调用+回调机制:提交任务后,不在原地等待,任务一旦执行完毕就会触发回调函数的执行,程序是并发执行进程的执行调用:阻塞:非阻塞:进程池: 同步调用实例:result()取得结 阅读全文
posted @ 2021-03-05 16:38 cheng4632 阅读(52) 评论(0) 推荐(0) 编辑
摘要:实现并行计算有三种方式,多线程,多进程,多进程+多线程。多内核(multicore chips)是指在一枚处理器(chip)中集成两个或多个完整的计算引擎(内核),计算机的cpu物理核数是同时可以并行的线程数量(cpu只能看到线程,线程是cpu调度分配的最小单位),一个核只能运行一个线程。进程是操作 阅读全文
posted @ 2021-03-01 18:33 cheng4632 阅读(1084) 评论(0) 推荐(0) 编辑
摘要:一、GIL(Global Interpreter Lock:全局解释器锁)每次执行python程序,都会产生一个独立的进程。在一个python的进程内,不仅有test.py的主线程或者由该主线程开启的其他线程,还有解释器开启的垃圾回收等解释器级别的线程,总之,所有线程都运行在这一个进程内。某个线程想 阅读全文
posted @ 2021-03-01 16:06 cheng4632 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一、线程的引入如果说在操作系统中引入进程的目的是使多个程序并发执行,以改善资源利用率及提高系统吞吐量,那么在操作系统中再引入线程则是为了减少程序并发执行所付出的时空开销,使操作系统具有更好的并发性。进程的两个基本属性:1、进城是一个拥有资源的独立单位2、进程同时又是一个可以被处理器,单独调度和分配的 阅读全文
posted @ 2021-03-01 14:52 cheng4632 阅读(64) 评论(0) 推荐(0) 编辑
摘要:from multiprocessing import Process, Queue, JoinableQueue import time, random, os def producer(q): for i in range(10): time.sleep(random.randint(1,3)) 阅读全文
posted @ 2021-03-01 10:03 cheng4632 阅读(73) 评论(0) 推荐(0) 编辑
摘要:内容均参考https://www.cnblogs.com/linhaifeng/p/7278389.html,https://www.cnblogs.com/xiaoyuanqujing/p/11636160.html,感谢分享一、进程的概念进程是资源分配和调度的基本单位,进程是程序在处理器上的一次 阅读全文
posted @ 2021-03-01 09:33 cheng4632 阅读(142) 评论(0) 推荐(0) 编辑