有没有一种方法可以让循环在后台运行,而其他代码继续在python中运行?

2024-05-19 03:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程很陌生,我想知道是否有一种方法可以在已经在Python中运行的代码的后台运行while循环?在

我在想

While True: print("gibberish") print("pass")

输出如下:

“胡言乱语 胡言乱语 通过 胡言乱语….'

(只要我得到类似的结果,就不必按这个顺序排列)


Tags: 方法代码true编程pass后台printwhile
3条回答

下面是使用asyncio(需要python3.7+):

import asyncio

async def loop():
    while True:
        print("gibberish")
        await asyncio.sleep(0.5)

async def main():
    future = asyncio.ensure_future(loop())
    for i in range(100):
        print("pass")
        await asyncio.sleep(1)
    future.cancel()
asyncio.get_event_loop().run_until_complete(main())    

这将为每个pass打印两个gibberish。你可以改变睡眠时间来改变比率。在

{{cd4}只执行一次。await ...调用是潜在地将执行交给其他协程的点。在

您可以参考以下代码。在

import threading

def func1():
    for i in range(10):
        print("gibberish")

def func2():
    print("pass")

t1 = threading.Thread(target=func1)
t2 = threading.Thread(target=func2)


if __name__ == '__main__':
    t1.start()
    t2.start()

它所做的是,同时运行方法func1func2,以便所提供的方法彼此作为后台任务运行。在

您可以使用^{}^{}

def background_code():
    while some_condition:
        print("gibberish")

...
thread = threading.Thread(target=background_code, args=(), kwargs={})
thread.start()
print("pass")
...

multiprocessing和{}都有非常相似的api,使用哪种api取决于您的用例——进程和线程之间的区别并不是这个问题的关键。你可能会想要你目前正在做的工作threading,但是在不同的情况下,你会选择其中一种。在

相关问题 更多 >

    热门问题