2016-10-05 82 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模塊只是一個支持同步訪問的模塊的實現,這意味着它支持同時使用它的多個線程(放置和獲取東西)。

相關問題