在windows中使用python的sigusr12信号等价于什么?

2024-04-26 21:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助。我正在努力在windows中的两个python进程之间发送通知。在

我看过信号模块,但不幸的是,windows不支持用户定义的信号。在

Windows使用另一种叫做消息的东西,但我不知道它是如何工作的,也不知道如何在python中使用它。如果有人有在python中在进程之间发送消息的想法或起点,那将不胜感激。在


Tags: 模块用户消息定义信号进程windows起点
3条回答

尝试使用zeromq通过套接字进行进程间通信。在

这实际上取决于您要寻找的是什么—您是希望控制消息、非阻塞消息,还是像通常使用signal模块那样捕获外部信号。在

由于您希望发送“两个python进程之间的通知”,我建议使用multiprocessing.connection模块的客户机和侦听器类,以实现一对非常简单的面向消息的连接对象:

http://docs.python.org/2/library/multiprocessing.html#module-multiprocessing.connection

过程A:

listener = Listener(('localhost', 9000)) # local TCP connections on port 9000
remote_conn = listener.accept()
listener.close()
print remote_conn.recv()
# prints 'a pickle-able object'
print remote_conn.recv()
# prints "['another', 'pickle-able', 'object']"

过程B:

^{pr2}$

这些类是内置的这一事实让我很高兴-不需要安装!只需小心遵循docs关于安全性和非酸洗数据的指导原则。在

Windows平台中没有SIGUSR1也没有SIGUSR2。您可以通过执行以下操作来确认:

C:\>python
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda custom (64-bit) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import signal
>>> dir(signal)
['CTRL_BREAK_EVENT', 'CTRL_C_EVENT', 'Handlers', 'NSIG', 'SIGABRT', 'SIGBREAK', 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_IGN', 'Signals', '_IntEnum', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_enum_to_int', '_int_to_enum', '_signal', 'default_int_handler', 'getsignal', 'set_wakeup_fd', 'signal']

这里1是来自Windows的官方文档。在

相关问题 更多 >