python中gevent協程庫
gevent協程庫使用
"""
gevent 比 greenlet 更強. 協程庫
協程是單執行緒, 遇到time.sleep() 是不能切換的.
gevent基於greenlet, 不需要手動切換, 遇到阻塞自動切換. 但是越到延時不切換.
gevent.sleep(2) 模擬阻塞, 會切換.
gevent.spawn(func) 啟動協程物件.
gevent.joinall(list) 等待指定的greenlet走完, 再走.
"""
import time
import gevent
import random
from gevent.queue import Queue
q = Queue(2)
def consumer():
while True:
item = q.get()
print("consumer {}".format(item))
time.sleep(2) # 會延時.
def producer():
while True:
item = random.randint(0, 99) # 0到99的隨機整數.
q.put(item)
print("producer {}".format(item))
time.sleep(2)
p = gevent.spawn(producer) # 啟動協程. 還可以 , + 函式引數.
c = gevent.spawn(consumer)
gevent.joinall([p, c]) # 阻塞當前流程, 執行完給定的greenlet, 才繼續走.
相關文章
- 基於協程的Python網路庫gevent介紹Python
- gevent 學習筆記 —— 協程筆記
- python協程(yield、asyncio標準庫、gevent第三方)、非同步的實現Python非同步
- 使用socket+gevent實現協程併發
- python中協程Python
- python-多工,簡易的協程gevent的安裝與使用例程Python
- Python中的協程Python
- Gevent 排程流程解析
- 小福利,用gevent多協程高效爬取海量資料
- Python gevent 是如何 patch 標準庫的 ?Python
- Python中協程(coroutine)詳解Python
- python中的協程及實現Python
- python 協程Python
- Python協程Python
- 【協程原理】 - Java中的協程Java
- python 協程與go協程的區別PythonGo
- Python協程與JavaScript協程的對比PythonJavaScript
- Python的協程Python
- Python協程詳解Python
- 理解Python的協程(Coroutine)Python
- python進階(17)協程Python
- python進階(25)協程Python
- [轉載] Python中協程的詳細用法和例子Python
- 協程庫基礎知識
- Phxrpc協程庫實現RPC
- Go中協程死鎖Go
- python 協程用法總結(一)Python
- python之協程的那些事Python
- python協程asyncio的個人理解Python
- Python協程greenlet實現原理Python
- python 協程 自定義互斥鎖Python
- 在Laravel 5.6中 使用Swoole的協程資料庫查詢Laravel資料庫
- perl協程運算元據庫
- 理解 Go 中的協程(Goroutine)Go
- Python 中的程式、執行緒、協程、同步、非同步、回撥Python執行緒非同步
- Python學習之路35-協程Python
- Python協程你學會了嗎?Python
- Python3.5協程學習研究Python