随笔分类 - 0.13 |— 模块4:并发编程
摘要:1 2 3 4
阅读全文
摘要:1、同步、异步、阻塞、非阻塞 2、IO发生时涉及的对象和步骤。 记住这两点很重要,因为这些IO模型的区别就是在两个阶段上各有不同的情况。 3、阻塞IO(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了rec
阅读全文
摘要:1、greenlet模块:实现20个任务切换 (1)switch 开关:执行greenlet对象 (2)g2.switch():接着上次的阻塞继续执行 (2)等待2s,阻塞中,不切换 2、gevent模块:阻塞也切换 (1)用法 (2)遇到IO阻塞时会自动切换任务 (3)不能识别其他阻塞:time.
阅读全文
摘要:1、一个线程实现并发 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制), 2、方式2:优先级高的先执行 其中第二种情况并不能提升效率,只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这种切换反而会降低效率。 为此我
阅读全文
摘要:1、多进程 2、多线程 3、线程池 4.genvet协程实现
阅读全文
摘要:1、为甚需要进程池,线程池 2、基本方法 3、进程池 4、线程池 5、map函数:取代了for+submit 6、异步调用与回调机制 (1)提交任务的两种方式 (2)同步调用 (3)回调函数 (4)是钩子函数? 钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所
阅读全文
摘要:1、Event对象 2、Event应用:连接数据库 例如,有多个工作线程尝试链接MySQL,我们想要在链接前确保MySQL服务正常才让那些工作线程去连接MySQL服务器, 如果连接不成功,都会去尝试重新连接。那么我们就可以采用threading.Event机制来协调各个工作线程的连接操作 (1)初级
阅读全文
摘要:1、互斥锁(排他锁) (1)不加锁的情况下 并发控制问题:多个事务并发执行,可能产生操作冲突,出现下面的3种情况 (2)、添加互斥锁(排他锁) 2、GIL全局解释器锁 参考博客: http://www.cnblogs.com/venicid/p/7975892.html GIL本质就是一把互斥锁,既
阅读全文
摘要:1、什么是线程 相当于一个车间内有多条流水线,都共用一个车间的资源。例如,北京地铁与上海地铁是不同的进程, 而北京地铁里的13号线是一个线程,北京地铁所有的线路共享北京地铁所有的资源,比如所有的乘客可以被所有线路拉。 2、多线程应用举例 3、开启进程的两种方式:threading模块 multipr
阅读全文
摘要:1.互斥锁 (1)为什么需要互斥锁 (2)如何加锁 2、模拟抢票练习 (1)多个进程共享同一文件,我们可以把文件当数据库,用多个进程模拟多个人执行抢票任务 并发运行,效率高,但竞争写同一文件,数据写入错乱,只有一张票,卖成功给了10个人 (2)加锁处理:购票行为由并发变成了串行,牺牲了运行效率,但保
阅读全文
摘要:1、multiprocessing模块 (1)介绍 (2)代码实现方式1 # 开启进程方式1:multiprocessing import time from multiprocessing import Process def task(name): print('%s is running' %
阅读全文
摘要:1、进程 2、 进程与程序的区别 举例: 想象一位有一手好厨艺的计算机科学家egon正在为他的女儿元昊烘制生日蛋糕。 他有做生日蛋糕的食谱, 厨房里有所需的原料:面粉、鸡蛋、韭菜,蒜泥等。 在这个比喻中: 做蛋糕的食谱就是程序(即用适当形式描述的算法) 计算机科学家就是处理器(cpu) 而做蛋糕的各
阅读全文
摘要:1、为什么要有操作系统 一般而言,现代计算机系统是一个复杂的系统。 其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率:全部掌握这些细节可能需要一万年....) 其二:并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件
阅读全文