gevent异步,io自动切换
#!/usr/bin/env python
# encoding: utf-8
# Date: 2018/6/19
# # from gevent import monkey # 这俩行必须放在首行,下面就可以使用time(非gevent)的io
# # monkey.patch_all() # 相当于把所有的io操作打了标记,把io阻塞操作变成了非阻塞操作
# # gevent遇到io都可以自动切换
# import gevent
# import time
#
#
# def eat(name):
# print('%s eat 1' % name)
# gevent.sleep(3) # 相当于io操作
# # time.sleep(3) # gevent不识别,只是别自己的io
# print('%s eat 2' % name)
#
#
# def play(name):
# print('%s play 1' % name)
# gevent.sleep(4)
# print('%s play 2' % name)
#
#
# start_time = time.time()
# g1 = gevent.spawn(eat, 'egon') # 提交任务是异步提交
# g2 = gevent.spawn(play, 'alex')
#
# g1.join()
# g2.join()
# stop_time = time.time()
# print(stop_time - start_time) # 4.005170583724976
# gevent 异步提交任务
from gevent import monkey;monkey.patch_all() # 必须在首行
import gevent
import time
def eat(name):
print('%s eat 1' % name)
time.sleep(3)
print('%s eat 2' % name)
def play(name):
print('%s play 1' % name)
time.sleep(4)
print('%s play 2' % name)
g1 = gevent.spawn(eat, 'egon') # 提交任务是异步提交
g2 = gevent.spawn(play, 'alex')
# time.sleep(5) # 保证线程在5秒内可以执行完
# g1.join() # 同上一行代码,不用考虑时间
# g2.join()
# 终极
gevent.joinall([g1, g2])
gevent异步,io自动切换的更多相关文章
- gevent 实现io自动切换,gevent.join([]), gevent.spawn, 爬虫多并发的实现
gevent 是一个第三方库,可以很容易的实现遇到io(文件传输)操作时,程序自动跳转到下一个程序 例一: 用gevent.sleep() 来模拟io操作 import gevent def foo ...
- 网络编程 - 协议遇到IO自动切换
一.协议遇到IO自动切换 python网络编程,遇到IO自动切换,通过模块gevent来实现: import gevent,time def g1(): print ("g1 is star ...
- Python Gevent协程自动切换IO
Gevent Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程. Gr ...
- 【python】-- 协程介绍及基本示例、协程遇到IO操作自动切换、协程(gevent)并发爬网页
协程介绍及基本示例 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是协程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他 ...
- Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 简单的启动线程语法 def run(name): ...
- 协程:gevent模块,遇到i/o自动切换任务 038
协程 : gevent模块,遇到io自动切换任务 from gevent import monkey;monkey.patch_all() # 写在最上面 这样后面的所有阻塞就全部能够识别了 impo ...
- 网络编程基础--协程--greenlet切换---gevent自动识别 IO ---
协程: 1 单线程来实现并发---协程: 协程:是单线程下的并发,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程, 即协程是由用户程序自己控制调度的 只 ...
- Day11-协程/异步IO/RabbitMQ
协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候 ...
- 12.python进程\协程\异步IO
进程 创建进程 from multiprocessing import Process import time def func(name): time.sleep(2) print('hello', ...
随机推荐
- javascript 对象简单介绍(二)
JavaScript Array(数组) 对象数组对象的作用是:使用单独的变量名来存储一系列的值. 什么是数组?数组对象是使用单独的变量名来存储一系列的值.如果你有一组数据(例如:车名字),存在单独变 ...
- charles抓包工具的使用:概述
一. 什么是包 用户和后台客户端之间的请求数据,都是以包的形式来传递的,具体要深究,可以去看看这方面的网络知识 二. 为何要抓包 1) 可以用来分析网络流量 2) 可以用来破译抓来的数据,比如密码之类 ...
- Hash算法-CityHash算法
cityhash系列字符串散列算法是由著名的搜索引擎公司Google 发布的 (http://www.cityhash.org.uk/). Google发布的有两种算法:cityhash64 与 ci ...
- mooseFS学习篇
官方网站:http://www.moosefs.org/ About MooseFS MooseFS is a fault tolerant, network distributed file sys ...
- a, b交换与比较问题
1. 求a, b中较大的数,不使用if.?.switch等判断语句. 答案: 另一种思路是求两者的差,然后通过位运算判断差值的正负,不过个人觉得还是第一种各位简洁优雅. 2. 交换a, b的值,要求不 ...
- C++轮子队-软件需求规格说明书
团队Github项目仓库 软件规格需求说明书 引言 编写目的 软件规格需求说明书书了“2048俄罗斯方块”1.0版本的软件功能性需求和非功能性需求. 文档约定 描述编写文档时所采用的标准或排版约定,包 ...
- 记录个人数组、字符串自己常忘记的方法,以及ES常用处理方式
记录自己在工作中,时不时使用,每次都要去查一下的基础方法.以及ES6经常使用的方法 一.Array 1.concat 合并数组 2.shift 获取数组第一个元素 unshift 向数组首位添加一个元 ...
- Kotlin 第一弹:自定义 ViewGroup 实现流式标签控件
古人学问无遗力, 少壮工夫老始成.纸上得来终觉浅, 绝知此事要躬行. – 陆游 <冬夜读书示子聿> 上周 Google I/O 大会的召开,宣布了 Kotlin 语言正式成为了官方开发语言 ...
- ng 实现插入和删除
结果: 代码: <!DOCTYPE html> <html ng-app="myApp"> <head lang="en"> ...
- canvas 绘制图像
结果: 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...