You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中让无限循环运行时执行循环外代码?

实现无限循环与其他代码并行执行的方案

当然可以做到!你的核心问题是避免无限while循环阻塞主线程,让后面的代码能同时运行。下面给你几个实用的Python实现方案:

方案一:使用多线程(Threading)

这是最常用的方法之一,把无限循环放到单独线程里,主线程就能不受阻塞地执行后续代码。

示例代码:

import threading
import time

def infinite_loop():
    while True:
        print('i will loop forever')
        time.sleep(1)  # 加延迟避免刷屏太快,也给线程切换留机会

# 启动线程运行无限循环
loop_thread = threading.Thread(target=infinite_loop)
loop_thread.daemon = True  # 设置守护线程,主线程结束时自动退出该线程
loop_thread.start()

# 主线程继续执行后面的代码
print('this code is now executed while the loop runs!')
# 这里加个延迟,否则主线程瞬间结束后,守护线程也会跟着终止
time.sleep(5)

方案二:使用异步IO(Asyncio)

如果你的循环涉及IO操作,异步IO是更轻量的选择,不用创建额外线程,靠事件循环调度任务。

示例代码:

import asyncio

async def infinite_loop():
    while True:
        print('i will loop forever')
        await asyncio.sleep(1)  # 异步等待,主动让出控制权给其他任务

async def main():
    # 创建并启动循环任务
    loop_task = asyncio.create_task(infinite_loop())
    # 执行其他代码
    print('this code is executed alongside the loop!')
    # 等待循环任务完成(因为是无限循环,会一直运行)
    await loop_task

asyncio.run(main())

方案三:使用多进程(Multiprocessing)

如果你的无限循环是CPU密集型任务,多进程能绕过Python的GIL(全局解释器锁),充分利用多核CPU资源。

示例代码:

import multiprocessing
import time

def infinite_loop():
    while True:
        print('i will loop forever')
        time.sleep(1)

# 启动进程运行循环
loop_process = multiprocessing.Process(target=infinite_loop)
loop_process.daemon = True
loop_process.start()

# 主进程执行后续代码
print('this code runs while the loop is in another process!')
time.sleep(5)

关键注意点

  • 守护线程/进程:设置daemon=True后,主线程/主进程结束时,子线程/子进程会自动终止,避免程序挂起无法退出。
  • 任务切换:示例里的sleep操作不仅是控制输出频率,更重要的是让线程/事件循环有机会切换到其他任务执行。
  • 资源共享:如果需要在循环和主线程之间共享数据,线程场景要加threading.Lock保证线程安全,进程场景要用multiprocessing.Queue这类进程间通信工具。

内容的提问来源于stack exchange,提问作者Seyi Oginni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:03:19