python - 如何在 50 秒后杀死子进程?

标签 python python-3.x linux subprocess popen

我想我有几个涉及多个问题的问题。首先,代码:

import subprocess
username = input ("Enter username: ")
subprocess.call(["python3", "sherlock", username])
Popen.terminate()

我正在使用 subprocess 使用 python3 运行 sherlock 程序。问题是,无论出于何种原因,sherlock 程序在完成后都不会退出。我不确定这是 sherlock 的问题还是我这边的问题。说实话,我不在乎,只是想在给它50秒跑动时间后在我这边杀掉它,因为这就是跑动的时间。

我做了一些阅读,据我所知,我应该使用 Popen.terminate() 来杀死它?我知道该命令需要更多运行,我需要告诉它要杀死什么...这就是我陷入困境的地方。我不知道如何确定正在运行的进程,然后杀死它。我的程序 95% 是在 sherlock 运行之后发生的,所以它并没有走得太远,所以我需要杀死它并让我的程序继续运行。

不知道如何从这里继续...

更新:好的,所以我确定程序会自行完成,而不必杀死它,但问题是一旦程序完成,python 脚本就不会继续。它只是坐在那里什么也不做。有没有办法强制它移动到脚本的下一行?

最佳答案

尝试这样的事情:

import subprocess
username = input ("Enter username: ")
try:
    ret = subprocess.call(["python3", "sherlock", username], timeout=50)
except subprocess.TimeoutExpired:
    # TODO: manage exception
    pass

关于python - 如何在 50 秒后杀死子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62379807/

相关文章:

java - gcc -x java on debian stretch

python - 强制 python 使用旧版本的模块(比我现在安装的)

python - 如何通过 swig 在 Python3 中正确创建 C++ vector ?

python - 有很多页面的 Django 分页器

python - 使用 SWIG 为 python2 和 python3 创建模块

linux - 在启动 Linux fedora 时启动 fifo

python - Windows的快速文件/目录扫描方法?

python - Pandas 多级索引到行

python - 如何在 python 中将 Avro 文件转换为 CSV 文件?

php - imagejpeg 和 chmod