摘要: 进程间的同步: 阅读全文
posted @ 2018-11-06 22:42 老π 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 1、采用Queue队列通信 2、采用Pipe管道通信 3、采用Manager管理器对象通信 Manager用于管理数据共享 阅读全文
posted @ 2018-11-06 22:41 老π 阅读(850) 评论(0) 推荐(0) 编辑
摘要: 构造方法: Process([group [, target [, name [, args [, kwargs]]]]]) group: 线程组,目前还没有实现,库引用中提示必须是None; target: 要执行的方法; name: 进程名; args/kwargs: 要传入方法的参数。 实例方 阅读全文
posted @ 2018-11-06 22:17 老π 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 一、多进程的概念 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情。借助这个包,可以轻松 阅读全文
posted @ 2018-11-06 21:55 老π 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 1、队列模块简介 队列是一种数据结构,用于存放数据,类似列表。它是先进先出模式(FIFO模式),类似管道一般; 单线程不需要用到队列Queue,它主要用在多线程之间的,Queue称为多线程利器。 列表在多线程共享资源的话,与queue队列比较,主要表现为列表在多线程中,数据不安全。多个线程到列表中拿 阅读全文
posted @ 2018-11-06 17:09 老π 阅读(840) 评论(0) 推荐(0) 编辑
摘要: 条件同步和条件变量(condition)同步差不多意思,只是少了锁功能,因为条件同步设计于不访问共享资源的条件环境。 event围绕一个标志位在搞。 event=threading.Event():条件环境对象,初始值 为False;event.isSet():返回event的状态值;event.w 阅读全文
posted @ 2018-11-06 16:48 老π 阅读(1070) 评论(2) 推荐(0) 编辑
摘要: 条件变量(Condition)也是一把锁,除了同步锁的作用外,还具有在线程间通信的功能。 有一类线程需要满足条件之后才能够继续执行,Python提供了threading.Condition 对象用于条件变量线程的支持,它除了能提供RLock()或Lock()的方法外,还提供了 wait()、noti 阅读全文
posted @ 2018-11-06 16:21 老π 阅读(696) 评论(0) 推荐(0) 编辑
摘要: 信号量也是一把锁,用来控制线程并发数的。 BoundedSemaphore或Semaphore管理一个内置的计数 器,每当调用acquire()时-1,调用release()时+1。 计数器不能小于0,当计数器为 0时,acquire()将阻塞线程至同步锁定状态,直到其他线程调用release()。 阅读全文
posted @ 2018-11-06 15:45 老π 阅读(3085) 评论(0) 推荐(0) 编辑
摘要: 死锁现象就是出现了互相等待解锁,最后程序停下来不走了的现象。 二、通过使用“递归锁RLock”解决上述死锁问题 为了支持在同一线程中多次请求同一资源,python提供了“可重入锁”:threading.RLock。RLock内部维护着一个Lock和一个counter变量,counter记录了acqu 阅读全文
posted @ 2018-11-06 14:59 老π 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 一、先用一个例子说明没有用锁的时候,达到的效果错误: 1、实例(没有锁的情况): 执行效果: python执行流程: 二、在资源上加锁(达到目的) 1、实例代码: 2、执行结果: 阅读全文
posted @ 2018-11-06 14:05 老π 阅读(530) 评论(0) 推荐(1) 编辑