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

如何使print("hello.")与while True窗口关闭代码同时运行?

问题原因

你的代码里while True是死循环,程序会一直卡在这个循环里,永远无法执行后面的print("hello.");就算把循环放到另一个文件导入,导入模块时会自动执行模块内的代码,所以导入后直接进入死循环,主程序的print还是无法运行。

解决方法:用多线程/多进程分离任务

要让循环和print同时运行,需要把它们放到不同的执行流中,推荐用多线程(开销更小),也可以用多进程。

方法一:多线程实现(推荐)

把窗口关闭的循环封装成函数,用threading模块启动一个后台线程运行这个函数,主线程就可以正常执行print:

import pyautogui
import threading

def close_target_windows():
    while True:
        # 关闭记事本窗口
        for win in pyautogui.getWindowsWithTitle('notepad'):
            print(win)
            win.close()
        # 关闭谷歌相关窗口
        for win in pyautogui.getWindowsWithTitle('google'):
            print(win)
            win.close()

# 启动后台线程,daemon=True表示主线程结束时自动终止线程
window_thread = threading.Thread(target=close_target_windows, daemon=True)
window_thread.start()

# 主线程执行print
print("hello.")

# 如果需要程序保持运行,可添加输入等待(否则主线程结束后程序会退出)
# input("按回车键退出程序...")

方法二:拆分到独立文件并通过线程调用

如果想把窗口关闭逻辑放到单独文件,比如命名为window_closer.py,文件内容如下:

import pyautogui

def close_target_windows():
    while True:
        for win in pyautogui.getWindowsWithTitle('notepad'):
            print(win)
            win.close()
        for win in pyautogui.getWindowsWithTitle('google'):
            print(win)
            win.close()

然后在主文件中导入函数并启动线程:

import threading
from window_closer import close_target_windows

window_thread = threading.Thread(target=close_target_windows, daemon=True)
window_thread.start()

print("hello.")

# 可选:保持主线程运行
# input("按回车键退出...")

方法三:多进程实现(适合资源隔离场景)

如果需要更彻底的资源隔离,可以用multiprocessing模块:

import pyautogui
import multiprocessing

def close_target_windows():
    while True:
        for win in pyautogui.getWindowsWithTitle('notepad'):
            print(win)
            win.close()
        for win in pyautogui.getWindowsWithTitle('google'):
            print(win)
            win.close()

# 启动进程
window_process = multiprocessing.Process(target=close_target_windows)
window_process.start()

print("hello.")

# 可选:等待用户输入后结束进程并退出
# input("按回车键退出...")
# window_process.terminate()

内容的提问来源于stack exchange,提问作者레이첼유아

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:07:18