如何在Python中创建更好的协程[复制]

0lvr5msh  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(63)

此问题已在此处有答案

How to properly create and run concurrent tasks using python's asyncio module?(3个答案)
10小时前关闭。
我想创建两个异步函数,我不知道什么时候需要运行它们中的任何一个,但它们必须不互相中断

import asyncio

async def func1():
    await asyncio.sleep(1)
    print("func1 completed")

async def func2():
    await asyncio.sleep(1)
    print("func2 completed")

asyncio.run(func1())

asyncio.run(func2())

当我运行它时,第二个“asyncio.run()”将等待第一个完成,只有在那时,它才会以1秒的延迟运行func2:

func1 completed
*1 second delay*
func2 completed

但是我想同时运行它们,所以它们的结果看起来像这样:

func1 completed
*no delay*
func2 completed
col17t5w

col17t5w1#

如果我理解正确的话,你应该使用asyncio.gather。看一下here,它有一个两个调用的例子:)

h79rfbju

h79rfbju2#

我刚刚从线程中发现了线程,现在我可以随时运行函数,而不必等待运行的函数完成。

import threading
import time

def func1():
    time.sleep(1)
    print("func1 completed")

def func2():
    time.sleep(1)
    print("func2 completed")

threading.Thread(target=func1).start()
# no delay
threading.Thread(target=func2).start()

他们将同时打印“已完成”。

相关问题