Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:async/await能否模仿这种基于生成器的解决方案?_Python_Async Await_Generator - Fatal编程技术网

Python:async/await能否模仿这种基于生成器的解决方案?

Python:async/await能否模仿这种基于生成器的解决方案?,python,async-await,generator,Python,Async Await,Generator,假设您有一个函数,它说,在事件循环的更新步骤中开始运行此函数。您希望暂停此函数的执行,直到该函数结束(或收到来自它的信号)。您仍然应该与新函数同时更新其余的实时更新函数 我已经使用生成器创建了一个有效的解决方案,但是为了理解async/await在Python中的工作原理,我很好奇是否有一个涉及这些关键字的解决方案。我不太明白async/await是否会将执行返回给调用函数。从我的测试来看,我不认为这样做,但我希望能够更好地理解它们,并从中获得更高的收益 注:全局变量仅用于小示例。这将在实际使用

假设您有一个函数,它说,在事件循环的更新步骤中开始运行此函数。您希望暂停此函数的执行,直到该函数结束(或收到来自它的信号)。您仍然应该与新函数同时更新其余的实时更新函数

我已经使用生成器创建了一个有效的解决方案,但是为了理解async/await在Python中的工作原理,我很好奇是否有一个涉及这些关键字的解决方案。我不太明白async/await是否会将执行返回给调用函数。从我的测试来看,我不认为这样做,但我希望能够更好地理解它们,并从中获得更高的收益

注:全局变量仅用于小示例。这将在实际使用中包装在命令模式中

导入时间
start\u update=False
flag=False
cur=0.0
def更新(增量):
全球cur
全球旗帜
cur+=delta
打印(当前)
如果cur>0.5:
flag=True
打印(“设置标志”)
定义做某事():
全局启动更新
全球旗帜
打印(“做一些准备工作”)
start\u update=True
虽然不是国旗:
假屈服
打印(“完成后做一些事情”)
屈服于真实
def main():
全球旗帜
last_time=time.time()
保持功能=无
完成=错误
尽管如此:
now=time.time()
增量=现在-最后一次
上次=现在
如果开始更新:
更新(增量)
如果HOLD_func不是None:
尝试:
完成=下一步(保持功能)
除停止迭代外:
通过
其他:
hold\u func=do\u something()
下一个(举行)
如果完成:
打破
如果名称=“\uuuuu main\uuuuuuuu”:
main()

相关?某种程度上。我试图使用async/await解决这个特定的问题,但我完全被难住了。我有一个异步函数,它基本上会循环直到全局标志被切换,然后使用
asyncio.sleep
等待,但它会挂在循环轮询器中。