问题
现在需要对某个文本中的每一条进行处理,例如:对每一行进行同样的操作,现在采用多线程进行,而不是一条一条读取、执行
解决
#! /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()里面是要执行的操作,这里以输出为例
执行结果:
代码解释:
首先,我们导入了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方法,并在每次消费时打印一条消息。
当所有线程都完成后,程序结束。