首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python-Asyncio取消指定时限后的输入

使用Python-Asyncio取消指定时限后的输入
EN

Stack Overflow用户
提问于 2019-08-19 02:21:22
回答 1查看 103关注 0票数 0

你好,我正在尝试使用异步来获取输入,如果给定,则继续,如果未给定,则取消任务并使用默认输入。

代码语言:javascript
复制
state = 'routine'

async def start():
    while True: 
        state = input('Enter state')
        print(state)

async def main():
    task = asyncio.Task(start())
    await asyncio.sleep(5)
    task.cancel()
    print(state)
    with suppress(asyncio.CancelledError):
        await task 

这是一个无限循环,给用户5秒的时间来提供输入,如果用户没有提供任何输入,则使用默认的输入(状态)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-19 17:08:12

input是一个阻塞函数,因此不能从协程调用它。提示您的start协程没有正确编写,那就是它没有await任何东西。请看一下input和其他异步等效项的aioconsole

此外,使用asyncio.create_task (或Python3.7之前的loop.create_task )创建任务,而不是直接调用Task构造函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57547250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档