从另一个进程中杀死一个python进程

时间:2019-01-06 05:14:34

标签: python python-3.x multiprocessing

我需要能够从另一个进程中杀死一个python进程。这是我现在如何做的一个例子:

在“主要”过程中:

# Write the ProcessID to tmp file
with open('/tmp/%s' % self.query_identifier, 'w') as f: 
    f.write(str(os.getpid()))

try:
    cursor.execute('''very long query''')
except Exception:
    do_some_other_stuff()
    raise ConnectionError("There was an error completing this process")

在另一个“杀死”该过程的过程中,我有:

pid = int(open('/tmp/%s' % self.query_identifier).read())
os.kill(pid, signal.SIGKILL)

这很好。但是,这完全终止了python进程,因此它永远不会到达except代码块。什么是做上述更好的方法?例如,这样我就可以在不终止python程序的情况下从另一个单独的进程执行“ kill”操作。

1 个答案:

答案 0 :(得分:2)

工人程序:

import signal

# Define and register a signal handler
def handler(signum, frame):
    raise IOError("Quitting on {}".format(signum))

signal.signal(signal.SIGINT, handler)

try:
    while(True): # Imitate a long and winding road
        pass
except IOError:
    print("I've been killed!")

主管程序:

import os, signal
os.kill(pid, signal.SIGINT)