简单的进程间通信

AnC*_*AnC 19 python perl ipc

我正在寻找一种简单的方法将消息从一个进程(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);
Run Code Online (Sandbox Code Playgroud)

任何有关如何解决和/或在何处阅读的指示将不胜感激!

fra*_*nkc 20

事实证明,进程间通信虽然表面上很简单,但实际上却充满了复杂性.无论任何人在简单的答案方面告诉你什么,请记住,可能有很多警告没有说明.

现在有了免责声明,我声称你可能想要的是消息队列.这是基于您在示例api中未包含IP地址的事实.如果你需要穿越机器,你会需要套接字.但是,如果您能够处理这个仅用于与同一台机器上的进程通信的事实,我认为您会发现消息队列更容易理解.

perl的一个很好的起点是:http:
//perldoc.perl.org/IPC/Msg.html

对于python,这似乎解释了(忽略其他类型的ipc像信号量):http:
//semanchuk.com/philip/sysv_ipc/


chi*_*ler 11

对于与socket相同风格的通电通信,请考虑查看0MQ.它可以根据您的两个应用程序的位置使用不同的通信技术,甚至对于本地进程,它也非常易于使用并为您解决问题.

http://zeromq.org


gha*_*ndi 3

一般来说,您对套接字感兴趣。获取所需粗略信息的一个好地方是IO::Socket::INET文档或来自perldoc perlipc的 perl 中更基本的套接字内容