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協程(yield、asyncio標準庫、gevent第三方)、非同步的實現Python非同步
- 使用socket+gevent實現協程併發
- python-多工,簡易的協程gevent的安裝與使用例程Python
- 小福利,用gevent多協程高效爬取海量資料
- Python中協程(coroutine)詳解Python
- python 協程Python
- Python協程Python
- Python的協程Python
- python 協程與go協程的區別PythonGo
- Python協程與JavaScript協程的對比PythonJavaScript
- Python協程詳解Python
- Phxrpc協程庫實現RPC
- 理解Python的協程(Coroutine)Python
- python進階(25)協程Python
- python進階(17)協程Python
- [轉載] Python中協程的詳細用法和例子Python
- 協程庫基礎知識
- python 協程用法總結(一)Python
- python 協程 自定義互斥鎖Python
- python之協程的那些事Python
- Go中協程死鎖Go
- 在Laravel 5.6中 使用Swoole的協程資料庫查詢Laravel資料庫
- Python學習之路35-協程Python
- Python3.5協程學習研究Python
- python協程asyncio的個人理解Python
- Python非同步協程(asyncio詳解)Python非同步
- Python協程你學會了嗎?Python
- 理解 Go 中的協程(Goroutine)Go
- 【python】非同步IO | 協程 | asyncio | await | yieldPython非同步AI
- python協程詳細解釋以及例子Python
- 協程在RN中的實踐
- Python的協程真的有那麼難嗎?Python
- python網路-多工實現之協程Python
- Python | 詳解Python中的協程,為什麼說它的底層是生成器?Python
- 深究Python中的asyncio庫-函式的回撥與排程Python函式
- Kotlin Coroutine(協程): 二、初識協程Kotlin
- Kotlin Coroutine(協程): 三、瞭解協程Kotlin
- swoole 協程原始碼解讀 (協程的排程)原始碼