我有這樣的場景:的Python開始從doulbe所有線程LOOP
threads = []
for wordToScan in wordsList:
dictionaryFileOpen = open(dictionaryFile, "r")
for i in range(10):
threads.append(Thread(target=words_Scan_Start, args=(dictionaryFileOpen, wordToScan)))
for thread in threads:
thread.start()
for thread in threads:
thread.join()
def words_Scan_Start(dictionaryFile, wordToScan):
while True:
sub_word = dictionaryFile.readline()
if not sub_word:
break
#... Here is some actions.
現在我需要一次啓動所有這些線程(每10個線程,每wordToScan in wordsList
)。
每wordToScan in wordsList:
應在10個線程,但沒有移動.readline()
爲其他wordToScan in wordsList:
,在同時工作使用dictionaryFileOpen
。另外,我不明白在哪裏關閉dictionaryFileOpen
。
是的,我明白這一點,我使用鎖()的線程的地方觸摸「線程安全的」共享資源。但是我使用文件的原因只是因爲'.readline()'。每當某個線程正在使用它時('.readline()'可以做到這一點),我不知道如何通過將光標指向下一行來迭代行。或者如何讓每個線程只使用列表中的「下一個未使用」項目。 – passwd
使工作線程從隊列中取出線(https://docs.python.org/2/library/queue.html)並處理它們。然後讓一個讀取器線程讀取行並將它們推入隊列中。 –
Thanx。隊列在wordList:'中用一個'wordToScan進行線程計算。但是,當我嘗試在使用常用隊列的單獨線程中啓動幾個'wordToScan in wordsList:'時,它並沒有幫助。你能用我注意到的代碼展示一個例子嗎? – passwd