example-code
example-code copied to clipboard
How to kill multiprocess parent program?
I run program but can't kill parent proccess.
code:
#-*- coding:utf-8 -*-
from concurrent import futures
import os
import sys
import signal
def test(num):
import time
print os.getpid()
time.sleep(100)
return time.ctime(), num
def handle_interrupt(signum, frame):
print 'CAUGHT SIGINT!!!!!!!!!!!!!!!!!!!'
sys.exit(1)
def main():
signal.signal(signal.SIGTERM, handle_interrupt) # kill
signal.signal(signal.SIGINT, handle_interrupt) # Ctrl+C
signal.signal(signal.SIGQUIT, handle_interrupt) # Ctrl+\
with futures.ProcessPoolExecutor(max_workers=3) as executor:
print 'id:', id(executor)
future1 = executor.submit(test,1)
future2 = executor.submit(test,2)
print future1
print future1
print future1.result()
print future2.result()
if __name__ == '__main__':
main()
run and press Ctrl + C
can exit program:
python mul_future.py
id: 140637338392144
<Future at 0x7fe8a35b8ad0 state=running>
<Future at 0x7fe8a35b8ad0 state=running>
2082
2083
^C
CAUGHT SIGINT!!!!!!!!!!!!!!!!!!!
CAUGHT SIGINT!!!!!!!!!!!!!!!!!!!
CAUGHT SIGINT!!!!!!!!!!!!!!!!!!!
CAUGHT SIGINT!!!!!!!!!!!!!!!!!!!
But use kill can't exit program
**session1:**run program:
python mul_future.py
id: 140243206338128
<Future at 0x7f8cdf41aad0 state=running>
<Future at 0x7f8cdf41aad0 state=running>
2091
2092
**session2:**kill parent proccess:
ps -ef | grep python
root 2087 1910 0 21:32 pts/0 00:00:00 python mul_future.py
root 2091 2087 0 21:32 pts/0 00:00:00 python mul_future.py
root 2092 2087 0 21:32 pts/0 00:00:00 python mul_future.py
root 2093 2087 0 21:32 pts/0 00:00:00 python mul_future.py
kill 2087
ps -ef | grep python
root 2087 1910 0 21:32 pts/0 00:00:00 python mul_future.py
root 2091 2087 0 21:32 pts/0 00:00:00 python mul_future.py
root 2092 2087 0 21:32 pts/0 00:00:00 python mul_future.py
root 2093 2087 0 21:32 pts/0 00:00:00 python mul_future.py
what should i do?