【发布时间】:2018-10-12 20:05:16
【问题描述】:
我有一个异步函数,我想“并行”运行另一个函数。但我需要在某个时刻在第一个函数中进行。
我见过很多例子,但都是同时启动两个函数,这不是我想要的。
我创建了这个简单的示例来说明我想要实现的目标(以及我尝试过的目标):
import asyncio
import time
async def print_letters():
for letter in ['A', 'B', 'C', 'D']:
print(letter)
time.sleep(1)
async def print_numbers(loop):
for number in range(1, 7):
if(number == 3):
# same result with create_task
# loop.create_task(print_letters())
asyncio.ensure_future(print_letters())
print(number)
time.sleep(1)
loop = asyncio.get_event_loop()
loop.run_until_complete(print_numbers(loop))
print('End')
当前输出:
1、2、3、4、5、6、A、B、C、D、结束
想要的输出应该是这样的:
1, 2, 3, A, 4, B, 5, C, 6 D, 结束
我尝试了一些其他的东西(例如asyncio.wait),但没有一个按预期工作。当您对 Python asyncio 很陌生时,文档也不容易理解。
如果问题不清楚或缺少某些内容,请告诉我,以便我进行编辑。感谢您的任何帮助。
Python 3.6.2
【问题讨论】:
-
它不会并行运行 2 个方法。 stackoverflow.com/a/40559338/5648253
-
@Helpinghand 你是对的!我表达错了。我想要的是表现得像并行运行一样。
标签: python python-3.x asynchronous python-asyncio