如何让两个Python程序进行通信?

时间:2015-12-21 15:35:41

标签: python sockets irc interprocess

我有两个Python程序,一个是IRC bot,使用套接字连接到IRC服务器。

该程序有一个循环,可以读取特定通道中的每个PRIVMSG。

第二个程序应该得到第一个程序输出的任何内容(在这种情况下为PRIVMSG)并使用它运行函数。

所以,它基本上是:

while 1:
    data = irc.recv(2048)
    if data.find("PRIVMSG " + current_channel + " :") != -1:
        send_to_second_program(data)

第二个程序是

while 1:
    data = get_from_first_program()
    do_stuff(data)

有没有办法在不使用模块的情况下实现这一目标?这两个程序应该是分开的。

3 个答案:

答案 0 :(得分:2)

虽然您可以使用几十种方式进行通信,并且您没有提供任何上下文或要求,但我认为您正在开发一个小项目。我建议你使用 rpc (远程过程调用)。使用rpc,您可以调用另一个应用程序的Python函数,就像它是一个本地可用的函数一样。查看一些Python的rpc库,比如http://www.zerorpc.io/,这对你的用例来说已经足够了。

使用rpc有一些缺点,例如,您可以在this question的答案中阅读,但如果范围有限,我认为这是实现您的最简单,非黑客的方法之一目标

答案 1 :(得分:0)

假设两个程序都在同一目录中,您可以使用import

导入另一个文件

例如,考虑一个文件a.py。要将其导入另一个文件b.py,请使用import a然后使用a.something访问文件a.py中定义的内容

答案 2 :(得分:-1)

  1. 通过JSON(Rest API)。它是面向服务的架构。因此,您可以扩展您的应用程序。
  2. 超过Message queue它也可以扩展,但它的可靠性不高。