**示例
import time
defwork1
():while
true:
print('正在掃地---')
yield
defwork2
():while
true:
print('正在搬磚---')
yield
w1 = work1()
w2 = work2()
# 協程肯定是併發執行
while
true:
next(w1)
next(w2)
greenlet第三方模組,手動的切換任務
greenlet().switch() 切換任務
**示例
import time
from greenlet import greenlet
deftest1
():while
true:
print("---a--")
gr2.switch()
time.sleep(0.5)
deftest2
():while
true:
print("---b--")
gr1.switch()
time.sleep(0.5)
gr1 = greenlet(test1)
gr2 = greenlet(test2)
#切換到gr1中執行
gr1.switch()
gevent基本使用
**示例
import gevent
import time
deffunc1
():while
true:
print('func1-----')
gevent.sleep(1) # gevent 的耗時操作,必須是 gevent自己的功能才能識別
deffunc2
():while
true:
print('func2----')
gevent.sleep(1)
g1 = gevent.spawn(func1)
g2 = gevent.spawn(func2)
# 主線程不會等待 gevent 任務結束
g1.join()
g2.join()
gevent高階使用
**示例
import gevent
import time
from gevent import monkey # 找來猴子
monkey.patch_all() # 使用猴子來打補丁,打補丁之後所有的耗時操作都會被替換為 gevent 的呼叫
deffunc1
():while
true:
print('func1-----')
time.sleep(1)
deffunc2
():while
true:
print('func2----')
time.sleep(1)
g1 = gevent.spawn(func1)
g2 = gevent.spawn(func2)
# 主線程不會等待 gevent 任務結束
g1.join()
g2.join()
多工18 協程
協程,又稱微執行緒,纖程。英文名coroutine。協程是python個中另外一種實現多工的方式,只不過比執行緒更小占用更小執行單元 理解為需要的資源 為啥說它是乙個執行單元,因為它自帶cpu上下文。這樣只要在合適的時機,我們可以把乙個協程 切換到另乙個協程。只要這個過程中儲存或恢復 cpu上下文那...
Python 多工 協程
高階程式設計技巧 學習筆記 1.1 同步 非同步 1.2 阻塞 非阻塞 2.1 什麼是協程?協程,又稱微執行緒。協程是 python 個中另外一種實現多工的方式,只不過比執行緒更小占用更小執行單元 理解為需要的資源 2.2 python中的協程大概經歷了如下三個階段 最初的生成器變形yield se...
多工非同步協程實現
usr bin env python coding utf 8 import random import time import asyncio async defeat name print s開始吃西瓜啦!name sleep time random.randint 1,3 在非同步協程中如果出...