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函数来让协程进入挂起状态。