Python:在信号中传递两个以上的参数

标签 python signals

我知道当我使用信号时有两个参数(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/

相关文章:

python - Qt - 子部件后面的背景图像

Python:如何在shell中查找当前工作目录?

python - 使用 fit_generator 的训练模型不显示 val_loss 和 val_acc 并且在第一个时期中断

c - 处理信号后如何停止从键盘读取?

c - 中断阻塞读

python - PyCharm 在项目中包含和修改外部库

python - 如何在 Python 中动态构建树

python - 如何使用信号处理?

Python-dbus 附加参数到 add_signal_receiver

c - 使用 C 中的子进程发送和处理信号时遇到问题