我在python
写了一个网络刮刀,我希望在特定时间内运行。说1分钟,然后杀死它。我想测量一下程序的性能。目前我正在使用subprocess
模块。我从另一个脚本启动程序并计算时间。
proc = subprocess.Popen(["python", my_program, arguments])
执行特定时间后,我会通过它的进程ID杀死它。
child_pid = proc.pid
os.kill(child_pid, signal.SIGTERM)
有更高效或更优雅的方法吗?
答案 0 :(得分:2)
您可以使用subprocess.Popen.terminate
(SIGTERM)或subprocess.Popen.kill
(SIGKILL)方法:
proc = subprocess.Popen(["python", my_program, arguments])
...
proc.terminate()
顺便说一句,如果您想使用用于启动该程序的相同python程序,请使用sys.executable
代替"python"
。
答案 1 :(得分:0)
from subprocess import Popen
from time import time
proc = subprocess.Popen(["python", my_program, arguments])
time.sleep(60)
proc.terminate()