简单的进程间通信
我在寻找一种简单的方法,来让一个进程(短暂运行的Perl脚本)向另一个进程(长时间运行的Python脚本)发送消息,这两个进程都在同一台机器上。
我做了一些研究,但发现的内容要么太复杂我看不懂,要么显得不必要的复杂,让我有点迷茫和困惑。
我想象的一个最简单的例子大致如下:
# listener.py
class Listener:
def __init__(self, port)
self.port = port
def on_message(self, msg):
print "%s: %s" % (timestamp, msg)
recipient = Listener(1234)
# sender.pl
sub send_message {
my ($msg, $port) = @_;
# ...
}
send_message("hello world", 1234);
如果有人能给我一些解决方案的建议,或者推荐一些可以阅读的资料,我将非常感激!
3 个回答
11
如果你想要一种像socket那样强大的通信方式,可以考虑看看0MQ。它可以根据你两个应用程序的位置使用不同的通信技术,即使是在本地进程之间,它也非常容易使用,并且能为你解决很多问题。
20
其实,进程间通信看起来简单,但实际上有很多复杂的地方。无论别人给你什么简单的答案,记得可能还有很多注意事项没有提到。
说完这些,我认为你可能需要的是消息队列。这是因为你在例子中没有提到IP地址。如果你需要在不同的机器之间通信,那你就需要使用套接字。不过,如果你只是在同一台机器上的进程之间通信,消息队列会更容易理解。
对于Perl来说,一个好的入门点是:
http://perldoc.perl.org/IPC/Msg.html
对于Python,这个链接似乎能解释得很好(可以忽略其他类型的进程间通信,比如信号量):
http://semanchuk.com/philip/sysv_ipc/
3
一般来说,你需要了解的是“套接字”。如果你想获取一些基本的信息,可以去看看IO::Socket::INET的文档,或者更基础的关于套接字的内容,可以参考perldoc perlipc。