美文网首页
gevent完成多任务(!!常用)

gevent完成多任务(!!常用)

作者: 栀心_d553 | 来源:发表于2020-02-11 12:09 被阅读0次

recfrom() connect() accept()都是阻塞,都可以利用这段时间,切换别的任务

但是在gevent中想用的话,必须写gevent.recfrom(),其他的也一样

猴子补丁,可以在内存中自动添加gevent

代码:


import gevent
import time
from gevent import monkey
monkey.patch_all()
#h猴子补丁的作用:在内存中,把所有的time换成gevent,保证代码在最后执行的时候
#不出错
def f1(n):
    for i in range(n):
        print(gevent.getcurrent(), i)
        # time.sleep(0.5)
        gevent.sleep(0.5)
def f2(n):
    for i in range(n):
        print(gevent.getcurrent(), i)
        # time.sleep(0.5)
        gevent.sleep(0.5)
def f3(n):
    for i in range(n):
        print(gevent.getcurrent(), i)
        # time.sleep(0.5)
        gevent.sleep(0.5)
g1 = gevent.spawn(f1, 5)
#代表创建出了一个对象,但是并不执行。f1表示运行f1,5代表执行5次
g2 = gevent.spawn(f2, 5)
g3 = gevent.spawn(f3, 5)
#在创建对象的过程中,上面的代码是不会执行的
g1.join()
#延时的时候,会切换任务,没有延时就不会切换
#会先进入f1,执行到sleep的时候遇到延时
#然后利用这个时间,查看f2....
g2.join()
g3.join()






#一个程序一启动,就把程序称之为进程,进程是资源分配的单位,
#线程执行代码,多任务就可以多线程,上面的代码仍然是单线程,利用的是等待的时间
#也就是协程。
#协程依赖于线程,线程依赖于进程。
#协程就相当于调了一个函数,所以利用效率很高

相关文章

  • gevent完成多任务(!!常用)

    recfrom() connect() accept()都是阻塞,都可以利用这段时间,切换别的任务 但是...

  • Python 高级 7

    迭代、迭代器、生成器、协程、yield、greenlet、gevent、进程线程协程对比、gevent多任务图片下...

  • 使用gevent实现多任务

  • 协程

    1.yield实现多任务 2.gevent实现多任务 取消延时函数后、阻塞在task1死循环 协程的核心思想是分配...

  • 协程

    gevent方法实现多任务(协程) 了解yield和grenlet yield方法创建协程 greenlet方法创建协程

  • 03-web服务器v3.1--03

    多进程、多线程实现Http服务器 使用gevent实现Http服务器开启多任务 单进程、线程、非堵塞实现并发 长链...

  • yield完成多任务

  • 简单爬虫代码

    import urllib.request import gevent from gevent import mo...

  • 2019-07-02作业

    import urllib.request import gevent from gevent import mo...

  • 作业

    import urllib.request import gevent from gevent import mo...

网友评论

      本文标题:gevent完成多任务(!!常用)

      本文链接:https://www.haomeiwen.com/subject/fvgtfhtx.html