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

Python循环中调用外部程序仅执行一次的问题排查

解决Python循环中调用外部程序只运行一次的问题

嘿,我一眼就看出问题出在哪了——你用的subprocess.run()默认是阻塞模式的!也就是说,每次调用它打开记事本后,Python主进程会一直等着记事本关掉,才会继续执行循环里的下一次调用。所以不是程序只运行了一次,而是你得关掉当前打开的记事本,下一个才会弹出来,看起来就像只跑了一次。

要实现一次性打开指定次数的记事本(不用等上一个关掉),你得让外部程序在后台独立运行,别阻塞主进程。这里给你两种靠谱的解决方法:

方法1:借助Windows的start命令

通过start命令启动程序,它会直接让程序后台运行,不会卡住主进程。记得加上shell=True参数来让系统解析这个命令:

import subprocess

z = int(input())

def run():
    # 用start命令让记事本后台启动,不阻塞主进程
    subprocess.run('start notepad.exe', shell=True)

a = 0
while(a < z):
    a = a + 1
    run()

方法2:使用subprocess的creationflags参数

这是更推荐的方式,不用依赖shell,直接通过subprocess的参数创建独立的子进程:

import subprocess

z = int(input())

def run():
    # 创建新控制台窗口运行记事本,主进程无需等待
    subprocess.run('notepad.exe', creationflags=subprocess.CREATE_NEW_CONSOLE)

a = 0
while(a < z):
    a = a + 1
    run()

现在你输入5的话,会一次性弹出5个记事本,完全符合你的预期啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:50:22