我知道当我使用信号时有两个参数(signum 和 frame)。
但是如果我想发送更多怎么办?例如:对象为自己。
我该怎么做?
例子:
def terminate_handler(signum, frame, self):
self.close()
signal.signal(signal.SIGINT, terminate_handler, object)
编辑:当我认为它行不通时,我发现了我即时写的解决方案,但实际上却行得通。我不知道它会起作用
def terminate_handler(self, signum, frame):
self.close()
signal.signal(signal.SIGINT, terminate_handler, object)
最佳答案
为什么不
def terminate_handler(self, signum, frame):
self.close()
signal.signal(signal.SIGINT, partial(terminate_handler, obj))
这是一个完整的示例(kill -2 ...)
import signal, os, sys
from functools import partial
from time import sleep
def terminate_handler(self, signum, frame):
print('terminate_handler:', self, signum)
sys.exit(0)
signal.signal(signal.SIGINT, partial(terminate_handler, 'foo'))
while True:
sleep(1)
关于Python:在信号中传递两个以上的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026842/