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

Python如何用subprocess启动带窗口后台子进程且不阻塞主脚本运行

解决方法

你需要将阻塞调用的subprocess.call替换为异步非阻塞的subprocess.Popen,同时重定向子进程的输出到空设备来屏蔽控制台日志,修改后的代码如下:

适配Python 3.3及以上版本(推荐)

import subprocess

# 前面的原有代码
subprocess.Popen(
    ['ffplay', 'video.mp4'],
    stdout=subprocess.DEVNULL,
    stderr=subprocess.DEVNULL
)
# 后续代码会立即执行,不需要等待ffplay窗口关闭

适配Python 3.3以下版本

import subprocess
import os

# 前面的原有代码
with open(os.devnull, 'w') as null_f:
    subprocess.Popen(
        ['ffplay', 'video.mp4'],
        stdout=null_f,
        stderr=null_f
    )
# 后续代码会立即执行,不需要等待ffplay窗口关闭
可选补充说明
  • 如果后续需要主动关闭ffplay播放窗口,可以保留Popen返回的进程实例,调用终止方法即可:
    # 存储进程实例
    ffplay_process = subprocess.Popen(
        ['ffplay', 'video.mp4'],
        stdout=subprocess.DEVNULL,
        stderr=subprocess.DEVNULL
    )
    # 需要关闭播放时执行
    ffplay_process.terminate()
    
  • 该修改不会影响ffplay播放窗口的正常显示,所有运行日志会被直接丢弃不会输出到控制台。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 01:45:08