摘要:原文连接:http://www.cnblogs.com/linhaifeng/articles/7430066.html#_label4 一 什么是进程 进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 举例(单核+多道,实现多个进程的并发执行): egon在一个时间段内有很多任务
阅读全文
摘要:异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多,从内核2.6版本才开始引入。先看一下它的流程: 用户进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先
阅读全文
摘要:一 了解select,poll,epoll 二 selectors模块 这三种IO多路复用模型在不同的平台有着不同的支持,而epoll在windows下就不支持,好在我们有selectors模块,帮我们默认选择当前平台下最合适的 基于selectors模块实现并发的FTP 参考:链接: https:
阅读全文
摘要:多路复用IO(IO multiplexing) IO multiplexing这个词可能有点陌生,但是如果我说select/epoll,大概就都能明白了。有些地方也称这种IO方式为事件驱动IO (event driven IO)。我们都知道,select/epoll的好处就在于单个process就可
阅读全文
摘要:非阻塞IO(non-blocking IO) Linux下,可以通过设置socket使其变为non-blocking。当对一个non-blocking socket执行读操作时,流程是这个样子: 从图中可以看出,当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会bloc
阅读全文
摘要:在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时
阅读全文
摘要:IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 https://www.cnblogs.com/fmgao-technology/p/9706485.html 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking)
阅读全文
摘要:server #!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/17from gevent import monkey,spawn;monkey.patch_all()from socket import *# 负责通信def commun
阅读全文
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/19# # from gevent import monkey # 这俩行必须放在首行,下面就可以使用time(非gevent)的io# # monkey.patch_all() # 相当于
阅读全文
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 15:03# @File : 协程.py# 协程:单线程下实现并发import timedef producer(): g = consumer() next(g) for i
阅读全文
摘要:一 引子 一:其中第二种情况并不能提升效率, 只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这种切换反而会降低效率。为此我们可以基于yield来验证。yield本身就是一种在单线程下可以保存任务运行状态的方法,我们来简单复习一下 单纯地切换反而会降
阅读全文
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 14:30# @File : 进程池线程池练习.pyfrom concurrent.futures import ThreadPoolExecutorimport request
阅读全文
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 14:05# @File : 异步调用与回调机智.py """ 同步调用和阻塞不一样: 同步调用不管是io型程序还是计算型程序,执行一个程序之后就是等待, 阻塞是io型特有的,因
阅读全文
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 10:20# @File : 进程池线程池.py# ProcessPoolExecutor和ThreadPoolExecutor接口一样# 计算密集型--进程 ,io密集型--线
阅读全文
摘要:server #!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 9:33# @File : server1.py# from socket import *# from threading import Thread### de
阅读全文
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 9:11# @File : 线程queue.pyimport queue# q = queue.Queue(3) # 先进先出- 队列## q.put('first')# q.p
阅读全文
摘要:#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/19 8:50# @File : 定时器.py# 简单定时器# from threading import Timer## def task(name):# print('hello
阅读全文
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/18# from threading import Thread,Event# import time# event = Event()# # event.wait()# # event.s
阅读全文
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/18from threading import Thread,Semaphore,currentThreadimport timeimport randomsm = Semaphore(3)
阅读全文
摘要:#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/18# # 死锁# from threading import Thread,Lock# import time# mutexA = Lock()# mutexB = Lock()### c
阅读全文