Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在执行其他工作时通过python接收消息_Python_Ipc_Interprocess - Fatal编程技术网

在执行其他工作时通过python接收消息

在执行其他工作时通过python接收消息,python,ipc,interprocess,Python,Ipc,Interprocess,我有一个python脚本a和一个python脚本B 它们都是独立运行的。我想,一旦脚本B完成执行,它应该向脚本a发送一条消息,“B完成” sockets等人可能发送了一条简单的消息。但是,脚本A正在自己做一些工作。如何在不停止执行A的情况下为B进行A侦听 非常感谢您的帮助 编辑: B是完全受CPU限制的计算。A是I/O绑定和CPU绑定的混合体。用户以不规则的间隔使用输入进行干预(类似键盘记录器的设置),其中I/O显然是击键,CPU绑定任务是对输入的键执行一些计算。有许多解决此问题的方法 您可能希

我有一个python脚本a和一个python脚本B

它们都是独立运行的。我想,一旦脚本B完成执行,它应该向脚本a发送一条消息,“B完成”

sockets等人可能发送了一条简单的消息。但是,脚本A正在自己做一些工作。如何在不停止执行A的情况下为B进行A侦听

非常感谢您的帮助

编辑:


B是完全受CPU限制的计算。A是I/O绑定和CPU绑定的混合体。用户以不规则的间隔使用输入进行干预(类似键盘记录器的设置),其中I/O显然是击键,CPU绑定任务是对输入的键执行一些计算。

有许多解决此问题的方法

您可能希望签出,这样可以轻松地在应用程序之间创建消息传递模式

消息通道将在它自己的线程中运行,如果与其他线程一起使用,它可能是一个“绿色”线程,以避免不必要的开销

结合gevent和zmq的几个示例:
不同消息传递模式的优秀指南:

使用这些库在a和B之间创建一个通道,该通道持续轮询新工作并报告结果


在a和B之间有一个代理的情况下,也存在一些其他解决方案,但是直接在节点之间建立链接可能更适合于您所描述的交互式ish应用程序。

他们在做什么工作?CPU还是IO绑定?设置的总体情况如何?谢谢。这似乎是个好办法。如果明天还没有更简单的解决办法,我会接受的。:)这是一个简单的解决方案;)ZMQ+gevent将是我处理此需求的goto方法。您可以省略gevent并使用普通的Python线程,但是如果进程A是CPU绑定的,那么您将在线程中进行大量上下文切换,而没有任何收益。如果它是I/O绑定的,那么Python线程将非常适合。