首先上一个多线程获取多个excel数据为dataFrame的例子
前言:
本此测试数据为120个excel文件,每个文件1000条数据,共120000条数据需要读取
直接创建线程与使用线程池对比
1. 直接依任务数创建线程
# @datetime:6/27/0027
"desc"
__author__ = "hanyaning@deri.energy"
import threading
import os.path
import time
from service import logger
import pandas as pd
logger = logger.MyLogger("multi_thread").getLogger()
# 定义全局变量,用于每个线程存放data
data = []
# 自定义线程类,继承threading.Thread
class MyThread(threading.Thread):
def __init__(self, name, path):
threading.Thread.__init__(self)
# 线程名
self.name = name
# 线程执行任务所需数据定义,这里是excel路径
self.path = path
# run方法,执行线程start方法后会自动调用这个run方法,用于调用getExcelData并将值传给data
def run(self):
global data
path = self.path
data.append(getExcelData(path))
def getExcelData(path):
logger.info("开始读取excel,当前线程:" + str(threading.currentThread().name))
data = pd.DataFrame()
if not os.path.exists(path):
raise FileNotFoundError()
if os.path.isfile(path):
logger.info("读取Excel文件完毕,当前线程:" + str(threading.currentThread().