有没有办法使循环在后台运行,而其他代码继续在python中运行?

时间:2019-03-13 03:25:32

标签: python loops while-loop

我真的是编程新手,我想知道是否有办法在已经在Python中运行过的代码后台运行while循环?

我在想类似的东西

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

输出类似:

乱码 胡言乱语 通过 乱码.....'

(只要得到相似的结果,就不必按此顺序)

2 个答案:

答案 0 :(得分:2)

您可以使用multiprocessingthreading

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

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

multiprocessingthreading都具有非常相似的API,根据您的用例使用哪个API-进程和线程之间的区别不是此问题的一个。您大概可能想要threading来完成当前的工作,但是在不同的情况下,您可能更愿意选择其中的一种。

答案 1 :(得分:0)

这里使用asyncio类似(需要python 3.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())    

这将为每个gibberish打印两个pass。您可以更改睡眠时间以更改比率。

这里,mainloopcoroutines,一次只能执行一个。 await ...调用是可能使其他协程产生执行的点。