python-asyncio - micropython asyncio:使定期函数永远运行
问题描述
我正在尝试实现一个 micropython 类以使函数以特定的时间间隔永远运行。为此,我正在尝试从这篇文章中改编以下代码:
class Timer:
def __init__(self, timeout, callback):
self._timeout = timeout
self._callback = callback
self._task = asyncio.create_task(self._job())
async def _job(self):
while True:
await asyncio.sleep(self._timeout)
await self._callback()
def cancel(self):
self._task.cancel()
async def timeout_callback():
await asyncio.sleep(0.1)
print('echo!')
async def main():
timer = Timer(2, timeout_callback) # set timer for two seconds
await asyncio.sleep(12.5) # wait to see timer works
asyncio.run(main())
关键是,我不能让它作为“正常”的while循环无限期地运行。我注意到回调按照最后一个await asyncio.sleep(secs)
命令中定义的时间继续运行......但这不是我真正想要实现的。任何帮助将不胜感激。
解决方案
推荐阅读
- r - Web 浏览器中的闪亮应用无法加载 - (192.***.2.** 响应时间过长)
- canvas - 如何使用鼠标在画布上单击来去除颜色?
- postgresql - psql -h IP/localhost -U postgres -W/-w 不工作
- amazon-web-services - 如果存储桶中 5 或 10 分钟没有收到数据,如何为 s3 存储桶设置 cloud-watch 警报?
- amazon-web-services - 如何将 RDS 快照状态作为用 Nodejs 编写的 AWS Lambda 函数的输入
- php - 为什么在 Windows 命令提示符下,三个双引号会在 PHP 中给出错误?
- c++ - cpp/c++ 中的 grpc 客户端代码,元数据 x-api-key/x-goog-api-key 不起作用,给我语音 API 的断管
- javascript - React + Redux - 获取和管理 imgs/文件的最佳实践
- linux - Linux cmake在文件(GLOB)命令中停留了几个小时
- html - 反应原生 webview 静态 HTML 不显示在 Modal 中