我有一个在满足特定条件时执行的脚本。我想启动另一个将进行一些计算的脚本(它必须在另一个脚本中)并保存该进程的PID。 然后想要检查另一个条件。当第二个条件满足时,我想杀死我之前开始的那个脚本。
请有人帮我提供某种解决方案。
示例:
Script1.py
做一些计算main_script.py
if [condition]:
在后台创建一个进程来调用Script1.py
保存该过程的PID
如果[另一个条件]:
杀死那个过程
答案 0 :(得分:1)
您可以使用subprocess包。 Popen返回实例进程,您可以保存它,然后在某些条件下终止它。例如:
if [condition to init]:
process = subprocess.Popen("./stuff someargs")
if [condition to stop]:
process.kill()
根据您要完成的任务,您可以使用kill或terminate。有关更多详细信息,请查看子进程文档。
答案 1 :(得分:0)
试试这段代码:
import os
if [condition]:
os.system('nohup python script1.py &') #start another script in background
if [another condition]:
pid = os.popen("ps aux | grep script1.py | awk '{print $2}'").readlines()[0] #call pid
os.system('kill '+pid) #kill process
我使用的是python 2.7.12和Ubuntu 16.04