多协程实例讲解(四 Python)
生活随笔
收集整理的這篇文章主要介紹了
多协程实例讲解(四 Python)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
還是基于官方文檔進(jìn)行改寫的結(jié)果
import gevent from gevent.event import AsyncResult a = AsyncResult()def setter():"""After 3 seconds set the result of a."""gevent.sleep(3)a.set('Hello!')def waiter():"""After 3 seconds the get call will unblock after the setterputs a value into the AsyncResult."""print("First Here")gevent.sleep()print('After sleep()')print(a.get())gevent.joinall([gevent.spawn(setter),gevent.spawn(waiter), ])輸出情況:
First Here
After sleep()
Hello!
雖然一開始使用了gevent sleep() 但是waiter還是會接著進(jìn)行(因為另外一個休息的時間會根據(jù),而且同樣是進(jìn)行切換)
- 但還是得說一下。全局變量中的 AsyncResult之間通過set和get函數(shù)進(jìn)行雙方的通信。
為了測試這個復(fù)用性和是否會由于多次設(shè)置,故做以下的改寫setter
def setter():"""After 3 seconds set the result of a."""gevent.sleep(3)a.set('Hello!')a.set('What?')改寫成這個樣子之后,輸出的結(jié)果就變成了下面的這個樣子了
First Here
After sleep()
What?
說明具有替換的特點!
- 將上面的setter恢復(fù)成原來的樣子。然后將這個waiter做了類似的修改。
輸出的結(jié)果是:
First Here
After sleep()
Hello!
Hello!
在這我認(rèn)為這類的實現(xiàn)是通過類中的某一個變量。
查了下那個官方文檔的,具體的實現(xiàn)是下面的樣子,只是返回一個變量~
總結(jié)
以上是生活随笔為你收集整理的多协程实例讲解(四 Python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多协程实例讲解(python 三)
- 下一篇: pyqt入门教程(一)