首页 > 其他分享 >协程- gevent模块

协程- gevent模块

时间:2022-11-22 16:25:19浏览次数:50  
标签:spawn func3 协程 moon gevent 模块 time print

协程

1.什么是协助:在单线程下实现并发效果

2.协程的原理:
  通过代码监听IO操作一旦遇到 IO 操作就立刻切换下一个程序 
  让cpu一直在工作  这样就可以一直占用CPU的效率 提高程序执行效率
  切换+保存状态
   
from gevent import spawn
# 需要导入这个库 才可以 遇到 IO 操作就自动切换和保存
from gevent import monkey;monkey.patch_all()
# 为了更加全部的识别更多IO操作 最好加上导入这个猴子补丁

def fucn1():
    print('我是func1')
    time.sleep(2)
    print('111111')

def fucn2():
    print('我是func2')
    time.sleep(3)
    print('22222')

def func3(name):
    print('我是func3',name)
    time.sleep(3)
    print('33333',name)

start = time.time()

gevent.joinall([spawn(fucn1),spawn(fucn2),spawn(func3,'moon')])
# 这样就可以同时执行这三个任务 并且遇到io操作就自动执行下一行
# 这样只需要3秒就可以执行完所有的程序

'''
我是func1
我是func2
我是func3 moon
111111
22222
33333 moon
3.0035367012023926
'''
print(time.time()-start)



g1 = spawn(fucn1)
g2 = spawn(fucn2)
g3 = spawn(func3,'moon')
g3.join()
# 把耗时最长的任务做一个等待结束 这样之前的任务就会根据IO操作
# 反复切换操作 也可以实现 按个io操作执行完就先接着执行哪一个
print(time.time()-start)
'''
我是func1
我是func2
我是func3 moon
111111
22222
33333 moon
3.0035367012023926
'''

标签:spawn,func3,协程,moon,gevent,模块,time,print
From: https://www.cnblogs.com/moongodnnn/p/16915462.html

相关文章

  • 05.其他模块
    AOP模块aop要达到的效果是:保证开发者在不修改源代码的前提下,为系统中的业务组件添加某种功能AspectsAspects实际上是对aop思想的实践,目前最好,最方便的是Aspectsinstr......
  • 基础菜单和模块路由实现
    创建路由组件:....配置模块路由:改进:改进:重定向:统一改进:路由模块:......
  • 04.Web模块
    WebSocket模块Servlet模块Web模块Porlet模块......
  • 数据分析三剑客-numpy模块
    什么是数据分析是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律使得数据的价值最大化分析用户的消费行为制定促销活动的方案......
  • 模块化与信息隐藏
    本节内容:★★★详细设计中的模块化与信息隐藏模块化与耦合、内聚面向对象中的耦合与内聚分解与抽象模块化与信息隐藏思想设计质量好的软件可以通过多个独立的团队......
  • 线程、GIL、协程
    1.多进程实现TCP服务端并发1.之前我们学习了一个服务端对应一个客户端的操作,但是我们无法实现一个服务端对应多个客户端的操作。因此我们需要在pycharm的右上角点击倒三......
  • 多进程并发,互斥锁,创建线程,线程多种方法,GIL全局解释器锁,进程线程池,协程
    目录多进程并发,互斥锁,创建线程,线程多种方法,GIL全局解释器锁,进程线程池,协程今日内容概要今日内容详细多进程实现TCP服务端并发互斥锁代码实操线程理论创建线程的两种方式线......
  • 互斥锁、线程、GIL全局解释器锁、进程池与线程池、协程
    内容详细多进程实现TCP服务端并发互斥锁代码实操线程理论创建线程的多种方式线程诸多特性GIL全局解释器锁验证GIL存在GIL与普通互斥锁的区别验......
  • 并发编程:多线程、GIL、协程
    目录一、多进程实现TCP服务器并发1.服务端2.客户端二、线程1.什么是线程2.进程与线程的关系3.创建线程的两种方式4.线程对象的其他方法5.同进程内多个线程数据共享三、互斥......
  • 互斥锁、死锁、信号量、线程、协程
    互斥锁、死锁、信号量、线程、协程目录互斥锁、死锁、信号量、线程、协程互斥锁互斥锁代码实操线程理论创建线程的两种方式线程的诸多特性GIL全局解释器锁验证GIL的存在GI......