0

一开始我必须再次指出我正在寻找的解决方案必须在 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只能是:,SIGTERMCTRL_C_EVENT,当CTRL_BREAK_EVENTreceived_signal 我可以为其定义处理程序的信号)可以是:,,,,,,或。因此,乍一看,这是我可以在进程之间进行通信的信号,但是在 Windows 上发送不是发送信号,而是调用函数。因此,正如我所见,没有办法使用信号进行通信。在这一点上,我没有想法,我该如何解决我的问题。使用的同步方式不是一个选项,因为我需要实时打印输出。SIGABRTSIGFPESIGILLSIGINTSIGSEGVSIGTERMSIGTERMSIGTERMterminate()Popen.communicate()

所以我的问题是:Windows 上的进程之间是否有异步通信方式?

4

0 回答 0