python - 运行子进程后如何立即杀死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
解决方案
不要使用subprocess.run
; 改为使用os.execl
。这会使您的媒体播放器在当前进程中替换您的 Python 代码,而不是开始一个新进程。
os.execl(MEDIA_PLAYER, p)
subprocess.run
有效地做同样的事情,但先分叉,以便暂时有两个进程运行您的 Python 脚本;一方面,subprocess.run
不做任何其他事情就返回以允许您的脚本继续。另一方面,它立即使用其中一个os.exec*
功能(有 8 种不同的品种)来执行您的媒体播放器。在您的情况下,您只希望第一个进程无论如何都退出,因此省去分叉的工作并os.execl
立即使用。
推荐阅读
- python - 如何在轴上绘制时间图
- android - 如何使用 SwitcpMap 观察三个数据?
- python - vscode python模块智能感知不起作用
- javascript - 反应透视动画麻烦
- r - 为另一列中的每个唯一值分配一个名称
- python - 根据多个位置删除numpy数组中的项目
- python - 如何使用 threadpoolexecutor 和请求在 python 中发送带有多个请求的有效负载?
- python - 将字符串转换后的字节转换回字符串
- javascript - 从 [key, value] 对象中删除对象
- python - Polyglot - 如何从句子标签中获得信心