python協程1:yield的使用
#! -*- coding: utf-8 -*- import inspect # 協程使用生成器函數定義:定義體中有yield關鍵字。 def simple_coroutine: print("-> coroutine started") # yield 在表達式中使用;如果協程只需要從客戶那裡接收數據,yield關鍵字右邊不需要加表達式(yield默認返回None) x = yield print("-> coroutine received:", x) my_coro = simple_coroutine my_coro # 和創建生成器的方式一樣,調用函數得到生成器對象。 # 協程處於 GEN_CREATED (等待開始狀態) print(inspect.getgeneratorstate(my_coro)) my_coro.send(None) # 首先要調用next函數,因為生成器還沒有啟動,沒有在yield語句處暫停,所以開始無法發送數據 # 發送 None 可以達到相同的效果 my_coro.send(None) next(my_coro) # 此時協程處於 GEN_SUSPENDED (在yield表達式處暫停) print(inspect.getgeneratorstate(my_coro)) # 調用這個方法後,協程定義體中的yield表達式會計算出42;現在協程會恢復,一直運行到下一個yield表達式,或者終止。 my_coro.send(42) print(inspect.getgeneratorstate(my_coro))
※Azure經典門戶創建VM,如何設置使用靜態IP地址?
※Mina 報文監聽器NioDatagramAcceptor一
※Redis 集群搭建詳細指南
※如何使用scala+spark讀寫hbase?
※Grunt壓縮HTML和CSS
TAG:科技優家 |
※Python中使用Type hinting 和 annotations
※Python 標準庫之 collections 使用教程
※windows下安裝python及第三方庫numpy、scipy、matplotlib終極版
※Process-Forest-Window進程日誌分析工具;python版的BloodHound
※Python 的 ChatOps 庫:Opsdroid 和 Errbot
※Python模塊——contextlib和urllib
※python的concat等用法
※deep-learning-with-python-notebooks中文版
※python小點dian兒:使用merge還是join
※Python的進階:copy與deepcopy區別
※Python 特殊函數(lambda,map,filter,reduce)
※Mozilla的Python3使用情況
※Python 標準庫精華: collections.Counter
※python操作neo4j
※Python中的 property特性
※python wsgi 簡介
※python的緩存庫:cacheout
※使用python將excel轉為lua文件
※Python中的 @property特性
※在Python中使用Elasticsearch