協程:
和進程,線程的不同:
進程,線程 | 搶佔式 | 進程和線程的切換,我們不能參與 |
協程 | 非搶佔式 | 協程的切換,由用戶來控制,主要解決I/O操作 |
協程的優點:
(1)極高的執行效率:因爲子程序切換由程序自身來控制,沒有線程切換的開銷
(2)不需要多線程的鎖機制,因爲只有一個線程,不存在同時寫變量的衝突
yield:
import time
# 有yield的函數就是生成器函數,
def test1():
while True:
print('test1....')
time.sleep(1)
yield
def test2():
while True:
print('test2...')
time.sleep(1)
yield
def main():
g1 = test1() # 返回一個生成器
g2 = test2()
while True:
next(g1) # 調用生成器的next()函數,開始執行函數體
next(g2)
if __name__ == '__main__':
main()
生成器有問題的同學歡迎去本人的博客【Python生成器】查看
下面爲你指路