Мой основной процесс порождает новый процесс, этот новый процесс должен завершиться, если сигнал SIGTERM/SIGKILL отправлен на него. Я новичок в python, и я не знаю, как передать этот сигнал в качестве аргумента функции.Как передать сигнал в качестве параметра в метод в python?
Мой код:
import os
import random
import time
import sys
import multiprocessing as mp
import psutil
import signal
def info(title):
print (title)
print ('module name:', __name__)
if hasattr(os, 'getppid'):
print ('parent process:', os.getppid())
print ('process id:', os.getpid())
def foo(q,num):
info('function foo')
if type(num) is int:
num*=2
q.put(num)
elif type(num) is Signal:
print ("Terminated")
time.sleep(10)
os.kill(os.getpgid(pid), num)
else :
sys.exit("error")
def receive_signal(signum, stack):
print 'Received:', signum
if __name__ == '__main__':
info ("main")
#mp.set_default('spawn')
number = random.randint(0,100)
print ("Initial number: ",number)
q = mp.Queue()
p = mp.Process(target=foo, args=(q,number))
p.start()
print ("Final Number: ",(q.get()))
foo(q,signal.signal(signal.SIGTERM,recieve_signal))
p.join()
В этот момент я ударил по сигналу проходящего функционировать Foo (д, signal.signal (signal.SIGTERM, recieve_signal))
Любая помощь очень ценится
signal.SIGTERM или любой другой сигнал будет возвращать целое число, я удалил условие Элифа для сигнала о прекращении процесса. –
@AnilPediredla Это прекрасно, все зависит от вас, как вы хотите обработать сигнал. Вам нужно знать что-нибудь еще, или на ваш вопрос достаточно ответили? – plamut
Да, на мой вопрос отвечает. Спасибо за вашу помощь. –