2015-12-21 117 views
-2

我有两个Python程序,一个是IRC bot,使用套接字连接到IRC服务器。如何让两个Python程序进行通信?

该程序有一个循环,用于读取特定通道中的每个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) 

有没有办法做到这一点不使用模块?这两个程序应该是分开的。

+0

你在做什么? – RickyA

+0

有很多方法可以做到这一点。您的特殊要求必须用于缩小范围。 – jpmc26

+0

我正在使用Linux。 –

回答

0

假设两个程序在同一目录下,你可以导入使用import

例如其他文件,认为某个文件a.py。将其导入另一个文件b.py使用import a然后使用a.something访问文件a.py

+0

我现在正在这样做。但是,我需要它在运行时发生。 –

1

定义虽然你可以从字面上使用几十种交流的东西,你不提供上下文或要求,我认为你是一个小工作项目。我会建议你使用rpc(远程过程调用)。使用rpc可以调用另一个应用程序的Python函数,就好像它是本地可用的函数一样。查看Python的一些rpc库,例如http://www.zerorpc.io/,这对您的用例来说似乎绰绰有余。

使用rpc有一些缺点,例如你可以在this question的回答中看到,但如果范围有限,我认为这是实现你的目标的最简单的方法之一。

+0

谢谢。我会研究它。 –

0
  1. Over JSON(Rest API)。它是面向服务的体系结构。所以,你可以非常扩展你的应用程序。
  2. 超过Message queue它也可以缩放,但它不是很可靠。
+0

有一些非常可靠的消息队列。你为什么说他们不可靠? – jpmc26

+0

首先,他们发送和接收消息。其次,或者他们可能是可靠和持久的或者不是。这不是它的主要功能。我的意思是,例如,用户已关闭(几次),但它跳过了一些消息。这些信息可能会破坏你的逻辑。例如,您可能忘记从账户中提款。有一个很好的比较消息队列http://stackoverflow.com/questions/731233/activemq-or-rabbitmq-or-zeromq-or – mrvol

相关问题