栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-从多个线程追加到同一文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-从多个线程追加到同一文件

解决方案是仅在一个线程中写入文件。

import Queue  # or queue in Python 3import threadingclass PrintThread(threading.Thread):    def __init__(self, queue):        threading.Thread.__init__(self)        self.queue = queue    def printfiles(self, p):        for path, dirs, files in os.walk(p): for f in files:     print(f, file=output)    def run(self):        while True: result = self.queue.get() self.printfiles(result) self.queue.task_done()class ProcessThread(threading.Thread):    def __init__(self, in_queue, out_queue):        threading.Thread.__init__(self)        self.in_queue = in_queue        self.out_queue = out_queue    def run(self):        while True: path = self.in_queue.get() result = self.process(path) self.out_queue.put(result) self.in_queue.task_done()    def process(self, path):        # Do the processing job herepathqueue = Queue.Queue()resultqueue = Queue.Queue()paths = getThisFromSomeWhere()output = precs.open('file', 'a')# spawn threads to processfor i in range(0, 5):    t = ProcessThread(pathqueue, resultqueue)    t.setDaemon(True)    t.start()# spawn threads to printt = PrintThread(resultqueue)t.setDaemon(True)t.start()# add paths to queuefor path in paths:    pathqueue.put(path)# wait for queue to get emptypathqueue.join()resultqueue.join()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638947.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号