摘要: 1.什么是协程 协程:是单线程下的并发,又称微线程,纤程。 协程是一种用户态的轻量级线程,协程是由用户程序自己控制调度的。 2.需要注意的点: 3.协程的特点如下: (1)必须在只有一个单线程里实现并发 (2)修改共享数据不需加锁 (3)用户程序里自己保存多个控制流的上下文栈 (4)附加:一个协程遇 阅读全文
posted @ 2017-09-12 22:18 嘟囔囔小孩 阅读(175) 评论(0) 推荐(0) 编辑
摘要: queue队列 :使用import queue,用法与进程Queue一样 用法介绍: class queue.LifoQueue(maxsize=0) #后进的先出 class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列 阅读全文
posted @ 2017-09-12 21:57 嘟囔囔小孩 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 1.什么是全局解释器锁GIL Python代码的执行由Python 虚拟机(也叫解释器主循环,CPython版本)来控制,Python 在设计之初就考虑到要在解释器的主循环中,同时只有一个线程在执行,即在任意时刻,只有一个线程在解释器中运行。对Python 虚拟机的访问由全局解释器锁(GIL)来控制 阅读全文
posted @ 2017-09-11 22:09 嘟囔囔小孩 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 1.线程 进程multiprocess模块基本模仿了线程threading模块的接口。两者在使用层面基本类似。 线程的好处: (1).创建进程的速度要比进程快 (2)同一进程内的线程,内存空间是共享的。 2.线程开启的两种方式: 3.在主进程下开启多个线程,每个线程的pid跟主进程的pid一样 结果 阅读全文
posted @ 2017-09-02 14:19 嘟囔囔小孩 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 1.什么是进程池: 进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。 2.参数介绍: Pool(numprocess,initializer,initargs) 创建进程池 阅读全文
posted @ 2017-08-30 14:52 嘟囔囔小孩 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 1.进程之间相互通信有几种实现方式。 multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的,推荐使用队列,因为管道也需要处理锁的问题。 2队列的主要方法 3.其他的方法(了解) . 4.代码实现: 代码效果: 阅读全文
posted @ 2017-08-30 11:48 嘟囔囔小孩 阅读(1286) 评论(0) 推荐(0) 编辑
摘要: 1.为什么要加锁? 在多个进程共享同一个打印终端的前提下,这样是并发运行的,但是由于竞争同一个输出终端,所以会造成显示错乱,就是各个进程之间的执行结果交叉显示。 要解决上述问题可以采用加锁的处理方式。 2.加锁有什么问题? (1)加锁可以保证多个进程同时输出到终端或者修改数据的时候,同一时间只有一个 阅读全文
posted @ 2017-08-30 10:44 嘟囔囔小孩 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 1.守护进程: (1)守护进程会在主进程结束的时候立马结束 (2)守护进程要设置在start之前 (3)守护进程能不能再开启子进程,否则会报错。(错误:AssertionError: daemonic processes are not allowed to have children) 代码例子: 阅读全文
posted @ 2017-08-30 10:17 嘟囔囔小孩 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 1.其他方法 terminate 和 is_alive name 与pid 阅读全文
posted @ 2017-08-30 10:11 嘟囔囔小孩 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 1.join 例如p.join(timeout),主进程等待p终止。主进程处于等待的状态,p是处于运行的状态。 timeout可以设置超时时间,比如:p.join(1) 主进程就会等待一秒,然后就执行。 注意:p.join只对start方式开启的进程有效,对run方式开启的进程无效。 代码: 运行结 阅读全文
posted @ 2017-08-30 09:50 嘟囔囔小孩 阅读(1067) 评论(0) 推荐(0) 编辑