我創建了5個線程來處理這些行。我發送一行作爲每個線程的參數。迭代文件但每次迭代需要5行
輸出就是我需要的。但是,它會因錯誤而停止。
代碼:
#!usr/bin/env python3
# -*- coding: UTF-8 -*-
import threading
# Create class myThread as subclass of Thread
class MyThread(threading.Thread):
def __init__(self, num, myArg):
threading.Thread.__init__(self)
self.num = num
self.myArg = myArg
# Overrides run() method to defines the thread goes to do.
def run(self):
print ("I'm thread number: ", self.num)
print(self.myArg)
myFile = open('file_01.txt', mode='r')
for myLine in myFile:
for h in range(1, 6): # create 5 instances of the thread
t = MyThread(h, myLine)
t.start()
myLine = myFile.__next__()
myFile.close()
錯誤:
Traceback (most recent call last):
File "/sajime/PycharmProjects/Learning/iterarFichero.py", line 25, in <module>
myLine = myFile.__next__()
StopIteration
的 'file_01.txt' 的內容是一個簡單的 'Lorem存有悲坐阿梅德,...' 的東西。
該錯誤不在多線程類中,也沒有調用,它出現在文件的迭代中,但是,爲什麼?
對於那些誰是問爲什麼我需要這樣的:腳本必須處理線加載在Web表單數據,並採取了很多的時間(滯後於服務器)。我意識到,如果我分工的任務更快。 (我不知道是否有更好的方法來做到這一點)
這是有點不清楚你想要做什麼。您的文件中可以有多少行?你想要多少個線程?這聽起來像你想要5個線程,但它看起來像你正在爲文件中的每一行創建一個線程。 – Weeble
@Weeble文件中的行是未知的。有5個線程。是的,我爲文件中的每一行創建一個線程,但同時只有5個線程正在工作。 – Trimax
爲什麼不能有5個線程並通過隊列發送線路?順便說一下,在Python中,嚴格來說,即使在多核機器上,只有一個線程可以同時工作*。 – bereal