我真的是编程新手,我想知道是否有办法在已经在Python中运行过的代码后台运行while循环?
我在想类似的东西
While True:
print("gibberish")
print("pass")
输出类似:
乱码 胡言乱语 通过 乱码.....'
(只要得到相似的结果,就不必按此顺序)
答案 0 :(得分:2)
您可以使用multiprocessing
或threading
:
def background_code():
while some_condition:
print("gibberish")
...
thread = threading.Thread(target=background_code, args=(), kwargs={})
thread.start()
print("pass")
...
multiprocessing
和threading
都具有非常相似的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
。您可以更改睡眠时间以更改比率。
这里,main
和loop
是coroutines,一次只能执行一个。 await ...
调用是可能使其他协程产生执行的点。