一开始我必须再次指出我正在寻找的解决方案必须在 Windows 上工作,对此感到抱歉。我想要实现的是进程之间的异步通信。好吧,我的问题要复杂得多,但我会解释它的本质。我有两个 python 文件:
test.py
import subprocess
import signal
import time
sent_signal = signal.SIGTERM
if __name__ == "__main__":
process = subprocess.Popen( "python sub_test.py" )
time.sleep( 2 )
process.send_signal( sent_signal )
和
sub_test.py
import signal
received_signal = signal.SIGTERM
event = False
def signal_handler( signum, frame ):
event = True
if __name__ == "__main__":
signal.signal( signal.SIGTERM, signal_handler )
while True:
if event:
print "Event"
event = False
else:
print "Working..."
正如 python 文档所说,sent_signal只能是:,SIGTERM
或CTRL_C_EVENT
,当CTRL_BREAK_EVENT
received_signal (我可以为其定义处理程序的信号)可以是:,,,,,,或。因此,乍一看,这是我可以在进程之间进行通信的信号,但是在 Windows 上发送不是发送信号,而是调用函数。因此,正如我所见,没有办法使用信号进行通信。在这一点上,我没有想法,我该如何解决我的问题。使用的同步方式不是一个选项,因为我需要实时打印输出。SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
SIGTERM
SIGTERM
terminate()
Popen.communicate()
所以我的问题是:Windows 上的进程之间是否有异步通信方式?