问题描述
我需要帮助。
我有一个问题,在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”,因此这似乎不可行。
帖子可以关闭-