gpt4 book ai didi

python - 从作为异步任务运行的函数中获取值

转载 作者:IT老高 更新时间:2023-10-28 21:47:51 28 4
gpt4 key购买 nike

我正在尝试以下代码:

import asyncio

@asyncio.coroutine
def func_normal():
print("A")
yield from asyncio.sleep(5)
print("B")
return 'saad'

@asyncio.coroutine
def func_infinite():
i = 0
while i<10:
print("--"+str(i))
i = i+1
return('saad2')

loop = asyncio.get_event_loop()

tasks = [
asyncio.async(func_normal()),
asyncio.async(func_infinite())]

loop.run_until_complete(asyncio.wait(tasks))
loop.close()

我不知道如何从这些函数中获取变量中的值。我不能这样做:

asyncio.async(a = func_infinite())

因为这会使 this 成为关键字参数。我该怎么做呢?

最佳答案

协程按原样工作。只需使用 loop.run_until_complete()call asyncio.gather() to collect multiple results 的返回值:

#!/usr/bin/env python3
import asyncio

@asyncio.coroutine
def func_normal():
print('A')
yield from asyncio.sleep(5)
print('B')
return 'saad'

@asyncio.coroutine
def func_infinite():
for i in range(10):
print("--%d" % i)
return 'saad2'

loop = asyncio.get_event_loop()
tasks = func_normal(), func_infinite()
a, b = loop.run_until_complete(asyncio.gather(*tasks))
print("func_normal()={a}, func_infinite()={b}".format(**vars()))
loop.close()

输出

--0
--1
--2
--3
--4
--5
--6
--7
--8
--9
A
B
func_normal()=saad, func_infinite()=saad2

关于python - 从作为异步任务运行的函数中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456881/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com