注意 1.不能无限的开进程,不能无限的开线程最常用的就是开进程池,开线程池。其中回调函数非常重要回调函数其实可以作为一种编程思想,谁好了谁就去掉2.只要你用并发,就会有锁的问题,但是你不能一直去自己加锁吧那么我们就用QUEUE,这样还解决了自动加锁的问题由Queue延伸出的一个点也非常重要的概念。以 ...
分类:
编程语言 时间:
2018-02-19 23:19:53
阅读次数:
280
#协程,又称为微线程,是一种用户态的轻量级线程 #!usr/bin/env python# -*- coding:utf-8 -*-__author__ = "Samson"#greenlet是协程"手动挡切换"from greenlet import greenletdef test1(): pr ...
分类:
编程语言 时间:
2018-02-01 23:11:45
阅读次数:
187
阅读目录 一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二 一 引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发 ...
分类:
编程语言 时间:
2018-01-18 01:07:03
阅读次数:
255
一、进程与线程 1.进程 我们电脑的应用程序,都是进程,假设我们用的电脑是单核的,cpu同时只能执行一个进程。当程序出于I/O阻塞的时候,CPU如果和程序一起等待,那就太浪费了,cpu会去执行其他的程序,此时就涉及到切换,切换前要保存上一个程序运行的状态,才能恢复,所以就需要有个东西来记录这个东西, ...
分类:
编程语言 时间:
2017-12-09 19:41:26
阅读次数:
228
from greenlet import greenletdef test1(): print("a") gr2.switch() print("b") gr2.switch()def test2(): print("c") gr1.switch() print("d") gr1 = greenle ...
分类:
编程语言 时间:
2017-10-29 12:53:45
阅读次数:
168
一、介绍: 1、协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 强调: 总结协程特点: 二、 Greenlet 如果我们在单个线程内有20个任务,要想实现在多个任务之间切换,使用yield生成 ...
分类:
编程语言 时间:
2017-10-17 18:52:55
阅读次数:
210
协程:实现单线程下并发的效果。Yield, Greenlet, Gevent, 协程好处: 1. 无需线程上下文切换的开销,只是利用 yield 实现了函数见的切换。 2. 无需原子操作锁定及同步的开销:协程是在单线程里实现的,协程在执行时,是串行的,所以就不需要锁。("原子操作(atomic op ...
分类:
编程语言 时间:
2017-10-09 20:55:05
阅读次数:
183
下载gevent,greenlet的.whl文件首先在这里找到对应操作系统的gevent文件,我这里选择的是gevent1.0.2cp27nonewin32.whl这个版本。安装pip先下载get-pip.py这个文件,下载地址是https://raw.github.com/pypa/pip/master/contrib/get-pip.py,直接另存为即可。放到Python的根目..
协成(Gevent) 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。CPU只认识线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调 ...
分类:
其他好文 时间:
2017-09-10 23:48:06
阅读次数:
275
gevent Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持 gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一个greenlet遇到IO操作时(比如访问网络),就自动切换到其他的greenlet,等 ...
分类:
编程语言 时间:
2017-09-09 17:12:04
阅读次数:
244