2024-05-19 03:04:14 发布
网友
我对编程很陌生,我想知道是否有一种方法可以在已经在Python中运行的代码的后台运行while循环?在
我在想
While True: print("gibberish") print("pass")
输出如下:
“胡言乱语 胡言乱语 通过 胡言乱语….'
(只要我得到类似的结果,就不必按这个顺序排列)
下面是使用asyncio(需要python3.7+):
asyncio
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。你可以改变睡眠时间来改变比率。在
pass
gibberish
{{cd4}只执行一次。await ...调用是潜在地将执行交给其他协程的点。在
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()
它所做的是,同时运行方法func1和func2,以便所提供的方法彼此作为后台任务运行。在
func1
func2
您可以使用^{}或^{}:
def background_code(): while some_condition: print("gibberish") ... thread = threading.Thread(target=background_code, args=(), kwargs={}) thread.start() print("pass") ...
multiprocessing和{}都有非常相似的api,使用哪种api取决于您的用例——进程和线程之间的区别并不是这个问题的关键。你可能会想要你目前正在做的工作threading,但是在不同的情况下,你会选择其中一种。在
multiprocessing
threading
下面是使用
asyncio
(需要python3.7+):这将为每个
pass
打印两个gibberish
。你可以改变睡眠时间来改变比率。在{{cd4}只执行一次。
await ...
调用是潜在地将执行交给其他协程的点。在您可以参考以下代码。在
它所做的是,同时运行方法
func1
和func2
,以便所提供的方法彼此作为后台任务运行。在您可以使用^{} 或^{} :
multiprocessing
和{threading
,但是在不同的情况下,你会选择其中一种。在相关问题 更多 >
编程相关推荐