好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解Python生成器和基于生成器的協程

詳解Python生成器和基于生成器的協程

熱門標簽:朝陽手機外呼系統 所得系統電梯怎樣主板設置外呼 佛山400電話辦理 市場上的電銷機器人 北瀚ai電銷機器人官網手機版 地圖標注面積 儋州電話機器人 北京電銷外呼系統加盟 小蘇云呼電話機器人

一、什么是生成器

Generator

1.生成器就是可以生成值的函數
2.當一個函數里有了 yield關鍵字就成了生成器
3.生成器可以掛起執行并且保持當前執行的狀態

代碼示例:

def simple_gen():
	yield 'hello'
	yield 'world'

gen = simple_gen()
print(type(gen))  # 'generator' object
print(next(gen))  # 'hello'
print(next(gen))  # 'world'

二、基于生成器的協程

Python3之前沒有原生協程,只有基于生成器的協程

1.pep 342(Coroutines via Enhanced Generators)增強生成器功能
2.生成器可能通過 yield 暫停執行和產出數據
3.同時支持send()向生成器發送數據和throw()向生成器拋出異常

Generator Based Corouteine代碼示例:

def coro():
	hello = yield 'hello'  # yield 關鍵字在 = 右邊作為表達式,可以被 send 值
	yield hello

c = coro()
# 輸出 'hello', 這里調用 next 產出第一個值 'hello',之后函數暫停
print(next(c))
# 再次調用  send 發送值,此時 hello 變量賦值為 'world',然后 yield 產出 hello 變量的值 'world'
print(c.send('world'))
# 之后協程結束,后續再 send 值會拋出異常 StopIteration

運行結果:

三、協程的注意點

協程注意點

1.協程需要使用send(None)或者next(coroutine)來預激(prime)才能啟動
2.在yield處協程會暫停執行
3.單獨的yield value會產出值給調用方
4.可以通過 coroutine.send(value)來給協程發送值,發送的值會賦值給 yield表達式左邊的變量value = yield
5.協程執行完成后(沒有遇到下一個yield語句)會拋出StopIteration異常

四、協程裝飾器

避免每次都要用 send 預激它

from functools import wraps

def coroutine(func):  # 這樣就不用每次都用 send(None) 啟動了
	“”“裝飾器:向前執行到一個 `yield` 表達式,預激 `func` ”“”
	@wrops(func)
	def primer(*args, **kwargs):   # 1
		gen = func(*args, **kwargs)  # 2
		next(gen)  # 3
		return gen  # 4
	return primer

五、python3原生協程

python3.5引入 async/await支持原生協程(native coroutine)

import asyncio
import datetime
import random

async def display_date(num, loop):
	end_time = loop.time() + 50.0
	while True:
		print('Loop: {} Time: {}'.format(num, datetime.datetime.now())
		if (loop.time() + 1.0) >= end_time:
			break
		await asyncio.sleep(random.randint(0, 5))

loop = asyncio.get_event_loop()
asyncio.ensure_future(display_date(1, loop))
asyncio.ensure_future(display_date(2, loop))
loop.run_forever()

到此這篇關于詳解Python生成器和基于生成器的協程的文章就介紹到這了,更多相關Python生成器與協程內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 深入理解python協程
  • python在協程中增加任務實例操作
  • python 如何引入協程和原理分析
  • python3爬蟲中異步協程的用法
  • Python協程的方式實現及意義筆記分享

標簽:云南 龍巖 寧夏 定西 商丘 酒泉 金融催收 江蘇

巨人網絡通訊聲明:本文標題《詳解Python生成器和基于生成器的協程》,本文關鍵詞  詳解,Python,生,成器,和,基于,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Python生成器和基于生成器的協程》相關的同類信息!
  • 本頁收集關于詳解Python生成器和基于生成器的協程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美成人影院在线播放| 黄色一级性生活片| 欧美 日韩 人妻 高清 中文| 九月婷婷人人澡人人爽人人爱| 国产精品秘?天美传媒视频| 蜜桃日本免费观看MV免费版| 91狠狠色丁香婷婷综合久久| 男女免费爽爽爽在线视频| 火影忍者污图| 国产精品无码亚洲8090| 欧美一级婬片A片免费软件 | 韩漫漫画免费| 老湿影院在线播放| se在线观看| 擁有員工一千五百余名| 欣尝asian国模大尺度| 美女的隐私免费看无遮挡| 蜜桃成熟时影| 女主娇软末世文po| 亚洲精品喷潮一区二区三区| 理论片午午伦夜理片久久 | 激情综合婷婷久久啪啪田中宁宁 | 寡妇性猛交ⅩXXX乱大交小说| 日本操美女| 老熟女亂伦一区二区三区| 男女性情视频| 尤物在线观看视频| 精品国产一区二区三区不卡在线| 羞羞漫画韩国无遮无删| 可以c女性角色的游戏| 欧美性生交按摩| 91爱啪啪| 在公车上拨开内裤进入| 内原美智子熟年交尾中文字幕| 男的插女的视频| 人操人| 韩国一级婬片A片AAA小说软件| 成**人免费一级毛片| 调教女仆spank视频丨vk| 被猛男伦流澡到高潮H视频网站 | 性狩人|