首页 > 解决方案 > 在不关心结果的情况下并行运行任务的最佳方法是什么?

问题描述

我正在学习 python,很多时候我看到自己想要运行一个特定的任务,而不是以任何方式等待它。例如,在一种特殊情况下,我希望打开一个 selenium webdriver 的实例,同时打开一个警告窗口,所以我想做一些事情,比如在 Javascript 中调用异步函数,该函数被调用,并且在其余代码运行时没有注意到其他函数被调用的情况下它是什么东西。

根据我的研究,在 Python 中做这种事情的方法是使用 asyncio 库,但到目前为止,我还没有找到一种方法来完成我正在尝试的事情。从这篇文章中,我看到了解决我通常遇到的问题的建议,即RuntimeWarning: coroutine foo was never awaited. 但是我不太了解如何使用他提出的解决方案,即:

prepare_for_foo()
task = loop.create_task(foo())
remaining_work_not_depends_on_foo()
loop.run_until_complete(task)

我想在一个函数中执行此操作,例如:

def run_ignored(coroutine):
loop = asyncio.new_event_loop()
task = loop.create_task(coroutine)
loop.run_until_complete(task)
loop.close()

但是当我调用它时,它会在其他任何东西之前完全运行,我认为这是有道理的,因为循环一直运行到函数内完成。那么我将如何做我想做的事?这篇文章的其余部分谈到了有一个时间循环来在另一个时间运行剩余的任务,但我不知道什么是它的好时机。最好是,我不想在我想要这个特性的每个函数上添加一些东西,这样在那个函数循环中有时间来完成它的任务。

提前致谢。

标签: pythonasynchronousasync-awaitpython-asyncio

解决方案


推荐阅读