ファイルを読み取り、データをリストにプッシュするための 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()