博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十五章、线程之协程
阅读量:5292 次
发布时间:2019-06-14

本文共 1029 字,大约阅读时间需要 3 分钟。

目录

第十五章、线程之协程

一、协程与线程和进程的区别

协助程序,线程和进程都是抢占式特点,线程和进程的切换我们是不能参与的。

而协程是非抢占式特点,协程也存在着切换,这种切换是由我们用户来控制的。

二、gevent模块

import gevent # 如果程序中没有耗时操作就顺序执行。def test1():    for i in range(5):        print('test1...', i)        gevent.sleep(1)  # 使用耗时模块可以自动操作  def test2():    for i in range(5):        print('test2...', i)        gevent.sleep(1)  if __name__ == '__main__':    g1 = gevent.spawn(test1)    g2 = gevent.spawn(test2)    g1.run()    print('程序结束了')

img说明:gevent模块中自带了sleep耗时函数,当使用这个耗时函数时,cpu会跳转到另一个就绪的程序,达到人工设置让其自动切换的功能。


  • 说明:如果需要使用time.sleep()耗时的话,需要打一个补丁
from gevent import monkeymonkey.patch_all()
#代码如下import geventimport timefrom gevent import monkey monkey.patch_all()   def test1():    for i in range(5):        print('test1...', i)        time.sleep(1)  def test2():    for i in range(5):        print('test2...', i)        time.sleep(1)  if __name__ == '__main__':    g1 = gevent.spawn(test1)    g2 = gevent.spawn(test2)    g1.run()    print('程序结束了')

img

说明:打补丁后的效率和效果和上面不打补丁的是一样的

转载于:https://www.cnblogs.com/demiao/p/11557203.html

你可能感兴趣的文章
CSS清浮动处理(Clear与BFC)
查看>>
thinkphp路由
查看>>
HDU - 1248-寒冰王座
查看>>
angular OnChange事件
查看>>
owin Oauth
查看>>
java String 强化操作 判断数字 字符串转阿拉伯数字,相似度等等
查看>>
Win(Phone)10开发第(5)弹,本地媒体服务器的一些注意事项
查看>>
[HDU5536] Chip Factory
查看>>
kettle转换和作业插件开发及调试
查看>>
npm run dev时报错“events.js:160 throw er; // Unhandled 'error' event”
查看>>
[java学习笔记]freemarker模板的页面静态化
查看>>
WebAPI使用多个xml文件生成帮助文档
查看>>
Android 获取手机本机内存、SD卡内存使用情况
查看>>
Use Drozer To Find SQL Inject In Diva Apk
查看>>
Qt中delete的问题
查看>>
Json数据格式
查看>>
Java String.split()用法小结(转载)
查看>>
自我介绍
查看>>
BZOJ 3680: 吊打XXX (模拟退火)
查看>>
【cs231n】图像分类-Linear Classification线性分类
查看>>