ファイルを読み取り、データをリストにプッシュするための Python コードがいくつかあります。次に、このリストをキューに入れ、スレッドを使用してリストを処理します。たとえば、一度に 20 個のアイテムを処理します。処理後、結果を新しいファイルに保存します。新しいファイルに入れられたものは、実際には元のファイルとは異なる順序でした。たとえば、私は入力に、
1a
2b
3c
4a
5日
しかし、出力は次のようになります。
2 単三
1バ
4 単三
5 日
約3
元の順序を維持する方法はありますか? これが私のコードです:
インポート スレッド、キュー、時間、sys
クラス eSS(threading.Thread):
def __init__(自己、キュー):
threading.Thread.__init__(self)
self.queue = キュー
self.lock = threading.Lock()
定義 (自己、電子メール、コード、提案、コメント、理由、dlx_score):
#何かをする
デフォルト実行 (自己):
True の間:
情報 = self.queue.get()
infolist = info.split('\t')
電子メール = インフォリスト[1]
コード = 情報リスト[2]
提案=情報リスト[3]
コメント = 情報リスト[4]
理由=インフォリスト[5]
dlx_score = (0 if infolist[6] == 'NULL' else int(infolist[6]))
g.write(info + '\t' + self.ess(電子メール、コード、提案、コメント、理由、dlx_score) +'\r\n')
self.queue.task_done()
if __name__ == "__main__":
キュー = Queue.Queue()
ファイル名 = sys.argv[1]
#スレッド数の定義
スレッド = 20
f = open(ファイル名,'r')
g = open(ファイル名+'.eSS','w')
行 = f.read().splitlines()
f.close()
開始 = time.time()
for i in range(threads):
t = eSS(待ち行列)
t.setDaemon(真)
t.start()
行の行の場合:
queue.put(行)
queue.join()
print time.time()-start
g.close()