在两个python应用程序之间进行通信

时间:2016-10-05 22:44:09

标签: python multithreading python-2.7 queue

我做了两个应用程序:

  1. 第一个是从网站上提取所有链接的蜘蛛。
  2. 第二个对第一个应用发送的每个链接进行一些检查。
  3. 当第一个应用找到链接时,如何向第二个应用发送通知或其他内容? 第二个应用程序必须连续监听第一个应用程序发送的数据。

    我发现很少发表Queue的帖子,但我真的不明白这项工作是什么。

    有人可以用一个简单的例子来解释我如何在两个应用程序之间进行通信吗?

    感谢' S

3 个答案:

答案 0 :(得分:0)

您希望将一个文件另存为另一个文件导入的“模块”。这可以使用import关键字来实现。例如,如果您将应用程序的第二部分命名为listener.py,则可以在其他文件中键入import listener(请记住将它们放在同一个文件夹中!)并从第二个文件中调用任何方法。 You can read more on Python modules here.

答案 1 :(得分:0)

有各种方法可以完成进程间通信,但到目前为止最简单的方法是使用文件系统。让你的蜘蛛将它的输出写入临时文件。完成后,将其移动到第二个进程定期轮询的文件夹中,当它找到工作时,然后进行处理。

spider可能会像:

import tempfile, os
tmpname = ''
with tempfile.NamedTemporaryFile(delete=False) as tmp:
    tmpname = tmp.name
    tmp.write("spider output....\n")
tgt = os.path.join('incoming', os.path.basename(tmpname))
os.rename(tmpname, tgt)

第二个过程看起来像这样:

import time, os
while 1:
    time.sleep(5)
    for item in os.listdir('incoming'):
        work_item = os.path.join('incoming', item)
        with open(work_item) as fin:
            # do something with item
        os.unlink(work_item)

答案 2 :(得分:0)

Queue只是一个容器,可以按FIFO顺序放置和检索项目。 Python 2中的Queue模块只是一个支持同步访问的模块的实现,这意味着它支持多个线程同时使用它(放置和获取东西)。