我有这样的场景:的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