多线程轮流写入文件

2020-02-10 315次浏览 已收录 10个评论

需求

  • 有5个小文件,每个线程读取一行,然后写入指定文件。另一个文件接着读取接着写入
  • 一轮执行完接着下一轮

文件格式:

  • 第一个文件全部是1,第二文件全部是2,等等

结果

最后汇总一个总文件

文件按123451234512345…..(每个数字是一行)

import threading
list=[]
import time
lock=threading.Lock()
class go(threading.Thread):
    time.sleep(1)
    def __init__(self,index):
        threading.Thread.__init__(self)
        self.index=index
    def run(self):
        fh=open("/Users/new/lean/test/docter/线程作业/ip "+str(self.index)+".txt")
        for line in fh:
            while (list[0]!=self.index):#如果当前不该轮到这个线程,就不运行
                pass
            op=open("/Users/new/lean/test/docter/线程作业/zuoye.txt",'a+')
            op.write(line)
            print(str(self.index)+" :"+line)
            op.close()
            print("删除前:"+str(list[0]))#已经写入过的就移除,
            list.remove(self.index)
            print(len(list))
            print("删除后:"+str(list[0]))
            list.append(self.index)#然后在后面追加以便下一轮使用
a=[]
cond=threading.Condition()
for i in range(1,6):
    list.append(i)
    x=go(i)
    x.start()
    a.append(x)
for j in a:
    j.join()


渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:多线程轮流写入文件
喜欢 (0)

您必须 登录 才能发表评论!

(10)个小伙伴在吐槽
  1. 我也是小白以后多多交流
    笨鸟先飞2020-03-27 12:53
  2. 小蚯蚓2020-03-27 13:44
  3. 我也是学计算机的
    小蚯蚓2020-03-27 14:09
  4. 给你点赞
    小白2020-03-28 16:33
  5. 奥利给
    hello2020-03-28 17:25
  6. 最好再详细点
    笨鸟先飞2020-03-28 17:50
  7. 给你点赞
    你好2020-05-26 09:22
  8. 奥利给
    中国加油小子2020-05-26 09:48
  9. 看了那么多博客,就你的能看懂
    小蚯蚓2020-05-26 10:13
  10. 我也是学计算机的
    沥青2020-05-26 10:36