我有一些 python 代码来读取文件并将数据推送到列表中。然后将此列表放入队列,使用线程处理列表,一次说 20 个项目。处理后,我将结果保存到一个新文件中。新文件中的内容实际上与原始文件的顺序不同。例如,我有输入,
1个
2 乙
3℃
4个
5天
但输出看起来像:
2个氨基酸
1巴
4个氨基酸
5天
3 约
有什么办法可以保留原来的顺序吗?这是我的代码:
导入线程、队列、时间、系统
类 eSS(threading.Thread):
def __init__(self,queue):
threading.Thread.__init__(self)
self.queue = 队列
self.lock = threading.Lock()
def ess(自我,电子邮件,代码,建议,评论,原因,dlx_score):
#做点什么
定义运行(自我):
而真:
信息 = 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(email,code,suggested,comment,reason,dlx_score) +'\r\n')
self.queue.task_done()
如果 __name__ == "__main__":
队列 = 队列.Queue()
文件名 = sys.argv[1]
#定义线程数
线程 = 20
f = 打开(文件名,'r')
g = open(文件名+'.esS','w')
行 = f.read().splitlines()
f.close()
开始 = time.time()
对于我在范围内(线程):
t = eSS(队列)
t.setDaemon(真)
t.start()
对于行中的行:
queue.put(行)
queue.join()
打印 time.time()-开始
g.close()