協程——猴子補丁

**

人爲切換:

**

from greenlet import greenlet
import time

def task1(temp):
    print("====")
    print("執行任務A")
    str2=b.switch()
    time.sleep(1)
    print("執行任務A完成"+str(str2)+str(temp))
def task2():
    print("執行任務B")
    c.switch()
    time.sleep(5)
    print("執行任務B完成")
    a.switch("789")

def task3():
    print("執行任務C")
    a.switch("456")
    time.sleep(1)
    print("執行任務C完成")

if __name__ == '__main__':
    a=greenlet(task1)
    b=greenlet(task2)
    c=greenlet(task3)
    #a.run("123")

    a.switch("123")

**

自動切換一

**

from gevent import monkey,spawn
import time
monkey.patch_all()
def task1():
    print("執行任務A")
    time.sleep(2)
    print("執行任務A完成")
def task2():
    print("執行任務B")
    time.sleep(5)
    print("執行任務B完成")
def task3():
    print("執行任務C")
    time.sleep(1)
    print("執行任務C完成")

def task4():
    print("執行任務D")
    time.sleep(1)
    print("執行任務D完成")

if __name__ == '__main__':
    a=spawn(task1)
    b=spawn(task2)
    c=spawn(task3)
    d = spawn(task4)
    a.join()
    b.join()
    c.join()
    d.join()

**

自動切換二

**

import gevent
from gevent import monkey
import requests
import urllib.request
import time

monkey.patch_all()


def my_down(*url):
    response=urllib.request.urlopen(url[0])
    content=response.read()
    # response=requests.get(url[0])
    # content = response.text()
    print("文件的路徑{},文件大小{}".format(url[0], len(content)))
    print("{}=====".format(url[0]))
if __name__ == '__main__':

    urls = ["http://www.baidu.com","http://www.qq.com","http://www.taobao.com"]
    a = gevent.spawn(my_down, *(urls[0], 10))
    b = gevent.spawn(my_down, *(urls[1], 9))
    c = gevent.spawn(my_down, *(urls[2], 8))
    gevent.joinall([a, b, c])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章