Python 学习 线程 and 进程
菜鸟小馒头
这个作者很懒,什么都没留下…
展开
-
Python 进程间通信 Queue
Queue是多进程的安全队列,可以使用Queue实现多进程之间的数据传递。 Queue的一些常用方法: Queue.qsize():返回当前队列包含的消息数量;Queue.empty():如果队列为空,返回True,反之False ;Queue.full():如果队列满了,返回True,反之False;Queue.get():获取队列中的一条消息,然后将其从列队中移除,可传参超时时长。原创 2017-09-15 07:17:18 · 1149 阅读 · 0 评论 -
Python 多线程和多进程对比
多线程:共享数据 多进程:进程间数据独立 from multiprocessing import Process,Queue import threading import time lock = threading.Lock() def run(info_list,n): lock.acquire() info_list.append(n) lock.release原创 2017-09-15 08:27:07 · 345 阅读 · 0 评论 -
Python 进程池 Pool
用于批量创建子进程,可以灵活控制子进程的数量 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间。如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十几个还好,但是如果上百个甚至更多,那手动去限制进程数量就显得特别的繁琐,此时进程池就派上用场了。 Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到原创 2017-09-15 08:13:39 · 392 阅读 · 0 评论 -
Python多进程共享变量
Python多进程间的数据是不能共享的,那么我如果要想在Python的多进程间共享变量那么应该怎么办? 可以使用multiprocessing中的Value和Array模块,相当于在共享内存给分配了一段内存,供给全部的进程使用。 from multiprocessing import Process,Value,Array import os def f(n,a): print('T原创 2017-09-18 08:15:02 · 608 阅读 · 0 评论 -
Python 多进程(multiprocessing)
全局解释器锁GIL: GIL全称全局解释器锁Global Interpreter Lock,GIL并不是Python的特性,它是实现Python解析器(CPython)时所引入的一个概念。 GIL是一把全局排他锁,同一时刻只有一个线程在运行。 毫无疑问全局锁的存在会对多线程的效率有不小的影响。甚至久几乎等于Python是个单线程的程序。 multiprocessing库的出现很大程度上是为原创 2017-09-12 07:18:11 · 335 阅读 · 0 评论 -
Python fork 操作
fork 操作: 调用一次,返回两次。因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的ID。子进程只需要调用getppid()就可以拿到父进程的ID。 import os from multiprocessing import Process import time print('Processing (原创 2017-09-12 08:25:51 · 280 阅读 · 0 评论 -
死锁原因、必要条件和检测方法
一、死锁原因: 1、资源不够 2、进程推进顺序不当 3、资源分配不当 二、死锁的必要条件 1、互斥条件:一个资源同一时刻只能被一个进程使用 2、请求与保持:对申请的资源进行等待,对已占有的资源不释放 3、不剥夺条件:进程已获得资源,在未使用完,不可被其它进程抢占 4、循环等待:进程间形成头尾衔接,循环等待条件 三、检测方法: 准备两个容器或者列表:A和B A存储线程正原创 2017-10-17 14:43:44 · 373 阅读 · 0 评论