繁体   English   中英

什么等于在Windows中使用python的sigusr1-2信号?

[英]what is equivalent to sigusr1-2 signals in windows using python?

请给我一些帮助。 我正在努力在Windows中的两个python进程之间发送通知。

我已经查看了信号模块,但是不幸的是,Windows不支持用户定义的信号。

Windows使用其他称为消息的东西,但我不知道它如何工作或如何在python中使用它。 如果有人对在python中的进程之间发送消息有想法或起点,将不胜感激。

Windows平台中没有SIGUSR1SIGUSR2 您可以这样做来确认:

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的官方文档。

这实际上取决于您要查找的内容-是要控制消息,非阻塞消息,还是像使用signal模块一样捕获外部信号的能力。

由于您要发送“两个python进程之间的通知”,因此我推荐multiprocessing.connection模块的Client和Listener类用于一对非常简单的面向消息的连接对象:

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中:

client = Client(('localhost', 9000))
client.send('a pickle-able object')
client.send(['another', 'pickle-able', 'object'])

这些类是内置的,这让我很高兴-无需安装! 请注意遵循有关安全性和取消处理数据的文档准则。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM