当前位置: 首页 > 面试题库 >

如何定期使用asyncio执行功能?

堵凯
2023-03-14
问题内容

我从迁移tornadoasyncio了,我找不到asyncio等效tornadoPeriodicCallback。(APeriodicCallback有两个参数:要运行的函数和两次调用之间的毫秒数。)

  • 有这样的等同物asyncio吗?
  • 如果没有,那么在没有冒RecursionError一会儿风险的情况下实现此目标的最干净方法是什么?

问题答案:

对于3.5以下的Python版本:

import asyncio

@asyncio.coroutine
def periodic():
    while True:
        print('periodic')
        yield from asyncio.sleep(1)

def stop():
    task.cancel()

loop = asyncio.get_event_loop()
loop.call_later(5, stop)
task = loop.create_task(periodic())

try:
    loop.run_until_complete(task)
except asyncio.CancelledError:
    pass

对于Python 3.5及更高版本:

import asyncio

async def periodic():
    while True:
        print('periodic')
        await asyncio.sleep(1)

def stop():
    task.cancel()

loop = asyncio.get_event_loop()
loop.call_later(5, stop)
task = loop.create_task(periodic())

try:
    loop.run_until_complete(task)
except asyncio.CancelledError:
    pass


 类似资料:
  • 我在src/test/resources/feature/中有以下功能文件(单独的功能文件),我想并行运行它们。比如:一个功能文件必须在chrome中执行,另一个必须在另一个chrome实例中执行,如@Tags name所述。 我正在使用Java1.2。5版本,AbstractTestNGCucumberTests作为runner。我可以运行一个功能文件,但当我尝试使用cucumber jvm并行

  • 我正在尝试编写一个函数,如果< code > selection _ Match = = ' No Match ' then < code > DNB = score _ difference 0.02 然而,我返回相同的df,没有任何修改 虽然它应该回来 Lorem ipsum dolor sit amet,consecetur adipiscing elit,sed do eiusmod te

  • 问题内容: 我正在开发php / javascript聊天。 用户登录时,其用户名将插入名为的MySQL表中。此插入返回将存储在称为 当用户关闭页面时,我需要删除MySQL表行。 我尝试了以下方法,但没有成功: js文件 chat.php 有什么办法吗? 问题答案: 您触发ajax异步(jQuery的默认设置-ajax)。但是浏览器不会等待任何卸载。 尝试在ajax 设置中进行设置。但是,您永远无

  • 有些函数需要很长时间才能执行。我想让用户用进度条等待。不幸的是,当我运行这个函数时,它只在函数结束时运行,而不是在我想要的时候。让我解释一下,我使用“sendloading()”方法启动进度条,但在测试期间,该进度条仅在处理其他函数“copyAssets”或“createOnClicBtnInsert()”后显示。有人能解释一下原因吗? 这是我的代码: 以下是我的进度条代码:

  • 问题内容: 假设我们有很多链接可供下载,并且每个链接可能花费不同的时间来下载。而且我只能使用最多3个连接进行下载。现在,我想确保使用asyncio有效地做到这一点。 这是我要实现的目标:在任何时间点,请尝试确保至少运行3个下载。 数字代表下载链接,连字符代表等待下载。 这是我现在正在使用的代码 输出是预期的: 但是这是我的问题: 目前,我只是在等待9秒钟以使主要功能保持运行状态,直到下载完成。在退

  • 问题内容: 我想在下拉菜单上执行鼠标悬停功能。当我们将鼠标悬停在菜单上时,它将显示新选项。我试图使用xpath单击新选项。但是不能直接单击菜单。因此,作为手动方式,我尝试将鼠标悬停在下拉菜单上,然后单击新选项。 问题答案: 实际上不可能执行“鼠标悬停”动作,而是需要一次性链接所有要实现的动作。因此,移至显示其他元素的元素,然后在同一链中,移至现在显示的元素,然后单击它。 使用动作链时,必须记住要“