在python中多執行緒其實是被弱化了,因為由於gil的原因,同一時間只有乙個執行緒能訪問cpu,即使你的cpu是多核的在python中因為多執行緒被弱化了,所以協程顯的重要,能夠在乙個執行緒中提高cpu的利用率,乙個執行緒中開啟500個協程,4核cpu開啟20個執行緒效率不錯,4核cpu開啟5個程序會比較不錯,所以利用協程一共可以實現50000的併發達到不錯
所以跟socket網路程式設計方面和爬蟲方面,併發用到協程會不錯
1.server.py
from gevent importmonkey
monkey.patch_all()
#有了該猴子補丁後,當任務發生io事件時,協程任務就會切換
import
gevent
import
socket
defdealmautual(conn):
'''協程任務
與client的會話
:return:
'''conn.send(b
'hello')
msg = conn.recv(1024).decode('
utf-8')
(msg)
conn.close()
if__name__ == '
__main__':
sk =socket.socket()
sk.bind((
'127.0.0.1
', 8080))
sk.listen()
while 1:
conn, addr = sk.accept() #
阻塞等待客戶端連線上來
gevent.spawn(dealmautual, conn) #
當有乙個客戶端連上來後則非同步建立乙個協程任務,非同步執行協程任務,當協程任務遇到io後,則會發生協程的任務切換
2.client.py
importsocket
sk =socket.socket()
sk.connect((
'127.0.0.1
', 8080))
msg = sk.recv(1024).decode('
utf-8')
(msg)
sk.send(b
'my client')
sk.close()
併發程式設計 協程
一 協程介紹 協程 是單執行緒下的併發,又稱微執行緒,纖程。英文名coroutine。一句話說明什麼是執行緒 協程是一種使用者態的輕量級執行緒,即協程是由使用者程式自己控制排程的。需要強調的是 對比作業系統控制線程的切換,使用者在單執行緒內控制協程的切換 優點如下 缺點如下 總結 必須在只有乙個單執...
python 併發程式設計 協程 協程介紹
協程 是單執行緒下的併發,又稱微執行緒,纖程。英文名coroutine。一句話說明什麼是執行緒 協程是一種使用者態的輕量級執行緒,即協程是由使用者程式自己控制排程的 需要強調的是 1.python的執行緒屬於核心級別的,即由作業系統控制排程 如單執行緒遇到io或執行時間過長就會被迫交出cpu執行許可...
Python 併發程式設計(協程)
本章節主要介紹,使用單執行緒實現併發,即只用乙個主線程 很明顯可利用cpu只有乙個 為此我們需要先回顧下併發的本質 切換 儲存狀態 ps 在介紹程序理論時,提及程序的三種執行狀態,而執行緒才是執行單位,所以也可以將上圖理解為執行緒的三種狀態 單執行緒下併發稱為 協程 特點 缺點 gevent 是乙個...