2014-03-28 148 views
2

我有一個線程用於處理數據。現在,它每次檢測到文件夾中的新文件時都會觸發。我使用Python進行編碼,但也許它是更常見的編程問題?Python線程 - 如何知道線程是否已在運行?

我的問題是雙重的:

  1. 我應該使用觸發器一樣,(事件驅動,更多或更少),或者我應該使用基於時間的進行(每3分鐘,創建一個新的線)?

  2. 如果我用基於時間的方式創建一個新的線程,如果兩個線程正在處理相同的數據,它會不會導致問題嗎?有沒有辦法告訴他們一起工作,或者如果存在的話不會產生第二種?

我對我的問題的可能天真道歉,我仍然很新的多線程和複式過程,所以我還是不知道什麼時候使用什麼。

+0

爲什麼如果你已經有一個新的線程? –

+0

例如,如果我生成的一個線程連接到數據庫,另一個檢查文件夾的內容並將新項目寫入數據庫。說數據庫獲得脫機,我想產生一個新的「連接到數據庫」線程,但只有一個不存在。那有意義嗎? – Jeff

回答

1

據我所知,你用一個單獨的線程處理任何新文件,所以它的行爲就像一個服務器用一個例程處理多個請求。

1)我認爲時間觸發的創建不適合您的情況,因爲它不依賴系統性能或處理的文件數量。你可以運行一些線程作爲守護進程,並有一個主線程,一旦它們到達,這些線程就會將任務分配給這些線程。如果同時存在太多,則可以放棄新的任務。另一方面,您可以創建一個新線程,該線程在每次出現新文件時進行處理,然後在處理完成時執行處理。

2)您可以開始新線程明確地爲其指定文件名。無論是否有幾個線程可以同時使用單個文件,都取決於您對文件的處理方式。總的來說,它變得比每個線程的單個文件複雜得多

相關問題