首页 > 解决方案 > 运行子进程后如何立即杀死Python脚本?

问题描述

我制作了一个脚本,它使用subprocess.run().

import subprocess

DATA_DIR = 'path\\to\\video\\files'
MEDIA_PLAYER = 'path\\to\\my\\media-player'

# returns path of random video file
p = chooseOne(DATA_DIR)
print('playing {}'.format(p))

# runs chosen path
subprocess.run([MEDIA_PLAYER, p])

但是我想在打开子子进程后立即终止运行此代码的 python 脚本。

这可能吗?如果没有,是否有另一种方法可以使用 Python 打开外部进程以允许脚本终止?

注意:我使用的是 Python v3.6

标签: pythonpython-3.xsubprocess

解决方案


不要使用subprocess.run; 改为使用os.execl。这会使您的媒体播放器在当前进程中替换您的 Python 代码,而不是开始一个新进程。

os.execl(MEDIA_PLAYER, p)

subprocess.run有效地做同样的事情,但先分叉,以便暂时有两个进程运行您的 Python 脚本;一方面,subprocess.run不做任何其他事情就返回以允许您的脚本继续。另一方面,它立即使用其中一个os.exec*功能(有 8 种不同的品种)来执行您的媒体播放器。在您的情况下,您只希望第一个进程无论如何都退出,因此省去分叉的工作并os.execl立即使用。


推荐阅读