通过进程启动python脚本并保存PID

时间:2017-05-17 00:40:53

标签: python python-2.7

我有一个在满足特定条件时执行的脚本。我想启动另一个将进行一些计算的脚本(它必须在另一个脚本中)并保存该进程的PID。 然后想要检查另一个条件。当第二个条件满足时,我想杀死我之前开始的那个脚本。

请有人帮我提供某种解决方案。

示例:

  

Script1.py
  做一些计算

     

main_script.py

     

if [condition]:

     

在后台创建一个进程来调用Script1.py

     

保存该过程的PID

     

如果[另一个条件]:

     

杀死那个过程

2 个答案:

答案 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