通过消息队列但不使用轮询方法在两个进程之间进行通信

时间:2019-05-15 10:47:57

标签: python tkinter ipc zeromq

主要进程是tkinter python脚本(GUI进程),在其中,我们正在使用子进程模块执行另一个python脚本。标准缓冲区(stdin,stout,stderr)设置为subprocess.PIPE,我们正在使用通道进行输入和输出通信。

现在主要部分即将到来;

我们需要根据子流程python脚本中选择的选项,在tkinter GUI中显示3种不同的弹出窗口。对于此数据传递,我们使用ZeroMQ(零消息队列)。

一个选项是将数据写入zmq,GUI进程应使用小部件的after方法和一些回调函数来继续检查队列中是否有任何数据(轮询)。但是我们不想要这种方法!

每当数据进入队列时,子进程脚本应将一个事件/信号传递给GUI,并且在事件接收时,GUI进程将从队列中读取数据。我们可以实施吗? 我通过互联网搜索了很多东西。请帮忙!!!

(注意:解决方案应同时适用于Windows和Linux)

谢谢。

这是我在轮询方法中使用ZMQ的链接。 https://www.reddit.com/r/learnpython/comments/8cbhii/handling_blocking_calls_while_1s_inside_tkinters/

0 个答案:

没有答案