python3多线程处理文件

问题

现在需要对某个文本中的每一条进行处理,例如:对每一行进行同样的操作,现在采用多线程进行,而不是一条一条读取、执行
python3多线程处理文件_第1张图片

解决

#! /usr/bin/env python
# encoding:utf-8
# Software:PyCharm
# Time:2023/10/07 14:30
# Author:sec0nd

import threading
import time
import queue

def readFile():
    file_object = open('1.txt')
    global queue
    for line in file_object:
        queue.put(line)
        
class Consumer(threading.Thread):
    def run(self):
        global queue
        while queue.qsize() > 0:
            msg = self.name + '消费了 ' + queue.get()
            print(msg)
            time.sleep(0.01)

queue = queue.Queue()
def main():
    readFile()
    for i in range(5):
        c = Consumer()
        c.start()

if __name__ == '__main__':
    main()

open(‘1.txt’) 这里是要执行操作的文本文件

for i in range(5) 这里的5是指5个线程

run()里面是要执行的操作,这里以输出为例

执行结果:
python3多线程处理文件_第2张图片

代码解释:

首先,我们导入了Python标准库中的threading、time和queue模块。threading模块提供了与线程相关的类和函数,time模块用于处理时间,queue模块用于创建和管理队列。

接下来,我们定义了一个名为readFile的函数,该函数用于读取文件中的数据并将其放入一个名为queue的队列中。在readFile函数中,我们使用了一个全局变量queue来管理队列。

接着,我们定义了一个名为Consumer的类,该类继承自threading.Thread类。Consumer类用于消费queue中的数据。run方法用于消费queue中的元素,并在每次消费时打印一条消息,并暂停0.01秒。

最后,我们定义了一个名为main的方法,该方法首先调用readFile函数将文件数据放入queue中,然后使用for循环创建了5个Consumer线程来消费queue中的元素。每个Consumer线程都会执行run方法,并在每次消费时打印一条消息。

当所有线程都完成后,程序结束。

你可能感兴趣的:(安全笔记,python,数据处理)