2016-10-05 49 views
0

我已经做了两个应用程序的之间:通信的两个Python应用程序

  1. 第一个就是提取一个网站的所有链接蜘蛛。
  2. 第二个对第一个应用发送的每个链接都进行一些检查。

当第一个应用程序找到一个链接时,我该如何向第二个应用程序发送通知或其他内容?
第二个应用程序必须连续监听第一个应用程序发送的数据。

我发现几个帖子说Queue但我真的不明白这是如何工作。

有人可以解释我与一个简单的例子如何沟通这两个应用程序?

感谢的

+0

这些答案中没有任何一个能解决您的问题吗?请参阅[如果有人回答我的问题,我应该怎么做?](http://stackoverflow.com/help/someone-answers) – martineau

回答

0

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

+0

如果我这样做,第一个应用程序在检查过程中会变慢。我需要在其他应用程序上执行这些检查 – Pixel

+0

https://www.youtube.com/watch?v=0oTh1CXRaQ0这有助于我理解模块和软件包。请花费大量时间并遵循计算机上的代码, 。 – tesseract

+0

在这种情况下,我想分开两个应用程序的2进程而不是相同的 – Pixel

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) 
0

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

相关问题