并发编程
梦寐_
这个作者很懒,什么都没留下…
展开
-
python异步并发模块concurrent.futures
python异步并发模块concurrent.futures。它非常简单易用,主要用来实现多线程和多进程的异步并发。1. Executor对象class concurrent.futures.ExecutorExecutor是一个抽象类,它提供了异步执行调用的方法。它不能直接使用,但可以通过它的两个子类ThreadPoolExecutor或者ProcessPoolExecutor进行调用。...转载 2019-10-29 22:29:20 · 843 阅读 · 0 评论 -
python并发编程之多线程
0原创 2019-06-29 21:23:34 · 136 阅读 · 0 评论 -
python并发编程:概念--并发 & 并行,同步 & 异步
并发 & 并行并发\color{HotPink}{并发}并发:指系统具有处理多个任务(动作)的能力并行\color{HotPink}{并行}并行:指系统具有 同时 处理多个任务(动作)的能力同步 & 异步同步:\color{HotPink}{同步:}同步:就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。是一种线性执行的方式,执行的流程不能跨越。一般用于流程性比较...原创 2019-07-02 10:35:39 · 157 阅读 · 0 评论 -
python并发编程:互斥锁,递归锁,Event,信号量semaphore
假设跑100个线程,但是这100个线程都会去访问某个公共资源(比如说下面的 num 这个全局变量),并对该资源进行处理(num -= 1)import timeimport threadingnum = 100def sub(): global num tmp = num time.sleep(0.0001) num = tmp-1 ti...原创 2019-07-02 16:11:22 · 810 阅读 · 0 评论 -
python并发编程:线程queue
queue用于建立和操作队列,常和threading类一起用来建立一个简单的线程队列。首先,队列有很多种,根据进出顺序来分类,可以分成queue.Queue(maxsize) FIFO(先进先出队列)queue.LifoQueue(maxsize) LIFO(先进后出队列)Queue.PriorityQueue(maxsize) 为优先级越高的越先出来,对于一个队列中的所...原创 2019-07-02 19:33:14 · 320 阅读 · 0 评论 -
python并发编程:多进程
什么是进程进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。举例(单核+多道,实现多个进程的并发执行):进程与程序的区别程序仅仅只是一堆代码而已,而进程指的是程序的运行过程。并发与并行无论是并行还是并发,在用户看来都是’同时’运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务一 并发:是伪并行,...原创 2019-07-02 21:03:50 · 153 阅读 · 0 评论 -
python并发编程:进程间的通信
消息队列通信原理:在内存中建立队列模型,进程通过队列将消息存入,或者从队列取出完成进程间通信。实现方法from multiprocessing import Queueq = Queue(maxsize=0)#功能: 创建队列对象#参数:最多存放消息个数#返回值:队列对象q.put(data,[block,timeout])功能:向队列存入消息参数:data 要...原创 2019-07-03 08:50:30 · 139 阅读 · 0 评论 -
python并发编程:进程池
在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。多进程是实现并发的手段之一,需要注意的问题是:很明显需要并发执行的任务通常要远大于核数一个操作系统不可能无限开启进程,通常有几个核就开几个进程进程开启过多,效率反而会下降(开启进程是需要占用系统资源的,而且开启多余核数目的进程也无法做到并行)例如当被操作对象数目不大时,可以...原创 2019-07-03 09:22:59 · 176 阅读 · 0 评论 -
python并发编程:协程、Greenlet、Gevent
cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间过长或有一个优先级更高的程序替代了它提及进程的三种执行状态,而线程才是执行单位,所以也可以将上图理解为线程的三种状态一:其中第二种情况并不能提升效率,只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这...原创 2019-07-03 11:32:50 · 526 阅读 · 0 评论 -
python并发编程:事件驱动模型
前言通常,我们写服务器处理模型的程序时,有以下几种模型:(1)每收到一个请求,创建一个新的进程,来处理该请求;(2)每收到一个请求,创建一个新的线程,来处理该请求;(3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求上面的几种方式,各有千秋,第(1)中方法,由于创建新的进程的开销比较大,所以,会导致服务器性能比较差,但实现比较简单。第(2)种方式,由于要涉及...原创 2019-07-03 14:24:43 · 232 阅读 · 0 评论 -
python并发编程:IO模型基础
相关概念:用户空间和内核空间进程切换进程的阻塞文件描述符缓存 I/O1、用户空间和内核空间例如:采用虚拟存储器,对于32bit操作系统,它的寻址空间(虚拟存储空间为4G,即2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也可以访问底层硬件的所有权限。 为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划...转载 2019-07-03 14:32:05 · 117 阅读 · 0 评论 -
python并发编程:IO模型
IO发生时涉及的对象和步骤:对于一个network IO (这里我们以read举例),它会涉及到两个系统对象, 1、一个是调用这个IO的process (or thread), 2、另一个就是系统内核(kernel)。当一个read操作发生时,它会经历两个阶段: 1、等待数据准备 (Waiting for the data to be ready) 2、将数据从内核拷贝到进程中...原创 2019-07-03 21:22:48 · 205 阅读 · 0 评论