python 队列单线程写入文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 队列单线程写入文本相关的知识,希望对你有一定的参考价值。

# 把queue队列里面的内容循环取出来写到文件,单个线程去操作
class WriteFileThread(threading.Thread):
    def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue

    def run(self):

        output = codecs.open('result.txt', 'w')

        emptyCount = 0
        while True:

            if emptyCount > 20:
                print '连续20次没有数据可获取,自动结束队列了'
                break

            # 如果队列为空,标记为空
            if (self.queue.empty()):
                emptyCount += 1  # 为空次数加1
                print "队列为空,第%s次休息,2秒再检查" % emptyCount
                time.sleep(2)  # 休息2秒

            else:
                emptyCount = 0  # 只要队列不是空的,就重置这个等待次数,以防断断续续导致提前退出
                result = self.queue.get()

                print '从队列获取到结果:' + result
                output.write(result + "\r\n")  # 从队列里面读取出来的结果直接写到文件里面

                # self.queue.task_done()

        self.queue.task_done()
        print "结束任务,写入文件关闭 At 【%s】" % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        output.close()
# 来自 <http://www.lingdonge.com/coding/4166.html> 

以上是关于python 队列单线程写入文本的主要内容,如果未能解决你的问题,请参考以下文章

练习题,使用多线程编写一个简单的文本处理工具

单线程在python中写入文件

利用双缓冲队列来减少锁的竞争

Python进阶第二篇多线程消息队列queue

多消费者单生产者队列

Python求索之路9——IO&队列&缓存