如何使用熊猫read_excel对多个Excel工作表进行多处理?

问题描述

我需要帮助。

我有一个问题,在python-3.x中使用多处理模块时,我无法访问函数调用的 RETURN
如果使用线程模块是一个更好的主意,我也会接受。

import multiprocessing
from pandas import read_excel

path1 = r"C:\ABSOLUTE_PATH_TO\excelfile.xls"
sheets = ["sheet_1","sheet_2","sheet_3"]
procs = []

def read_xls(path,sheet):
    df = read_excel(path,sheet_name=sheet,header=0,decimal=',',delim_whitespace=True)
    return df


for index,sheet in enumerate(sheets) :
    proc = multiprocessing.Process(target=read_xls,args=(path1,sheet))
    procs.append(proc)
    proc.start()

for proc in procs:
    proc.join()

此外,我想将该代码用作类,并且不想将其作为主文件运行:

if __init__ == '__main__':
    class()

如何获取返回的数据框的列表或字典?
我可以稍后在另一个主程序中将其作为多进程类运行吗?
例如:我想稍后在Kivy GUI的后台运行该类,同时按下加载按钮。

谢谢。

P.S .:我已将代码接受到此source

编辑: 我想使用3个并行进程或线程访问工作表的原因是为了加快加载时间。

解决方法

您可以一次从excel文件中读取所有工作表,然后分别进行访问。

all_sheets = read_excel(path,sheet_name=None,header=0,decimal=',',delim_whitespace=True)

sheet_1 = all_sheets['sheet_1']
sheet_2 = all_sheets['sheet_2']
sheet_3 = all_sheets['sheet_3']
,

好的,此尝试的目标是更快地加载excel工作表,但由于回答“ tdelany”,因此这似乎不可行。

帖子可以关闭-

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...