Python的send函數是在協程中使用的,用于向協程發送數據。它的語法如下:
coroutine.send(value)
其中,coroutine是一個協程對象,value是要發送的數據。
使用send函數時,需要先啟動協程,可以使用asyncio庫中的create_task函數或者ensure_future函數創建一個協程對象。然后,在協程中使用yield關鍵字來接收send函數發送的數據。
以下是一個簡單的示例:
import asyncio
async def my_coroutine():
while True:
value = await asyncio.sleep(1) # 等待1秒
print('Received:', value)
async def main():
coro = asyncio.create_task(my_coroutine())
await asyncio.sleep(2) # 等待2秒
coro.send('Hello') # 發送數據
asyncio.run(main())
在上面的示例中,我們創建了一個協程對象my_coroutine,并使用create_task函數啟動它。然后,我們等待了2秒鐘,然后使用send函數向my_coroutine發送了一個字符串’Hello’。在my_coroutine中,我們使用了await關鍵字來接收send函數發送的數據,并打印出來。
需要注意的是,使用send函數發送數據時,協程必須處于掛起狀態,否則會拋出一個TypeError異常。在上面的示例中,我們使用了asyncio.sleep函數來讓協程進入掛起狀態。