所以我对并行处理很陌生,但我开始让它同时解析多个Excel文件。当我只使用openpyxl时,它可以很好地工作,但据我所理解,这是一个基本的XML解析器。当我包含使用XLWings的部分(我喜欢利用它在Excel中为文件验证目的计算方程的能力)时,我得到以下错误:
pywintypes.com_error: (-2147221008, 'CoInitialize has not been called.', None, None)这是我用来初始化新XLWings实例和加载工作簿的大致代码:
def openWorkbook(self, filePath):
app = xw.apps.add()
app.display_alerts = False
app.screen_updating = False
wb = self.app.books(filePath) #Note that this is called only once for each workbook.
app.screen_updating = True
app.quit()有什么方法可以让XLWings同时打开几个Excel实例?我应该试着做一些像this这样的事情吗?如果是这样的话,我不确定如何将线程交给XLWings进行初始化。
发布于 2017-10-10 13:50:17
所以我想出了解决办法,其实很容易。我只是在pythoncom.CoInitialize()调用之前从pythoncom包中添加了xw.apps.add():
ParallelProcessController.py
from multiprocessing.dummy import Pool
from LoadWorkbook import openWorkbook
def callOpenWorkbookInParallel(self, lsExcelFiles):
pool = Pool(processes=3)
pool.map(openWorkbook, lsExcelFiles)LoadWorkbook.py
import xlwings as xw
import pythoncom
def openWorkbook(self, filePath):
pythoncom.CoInitialize()
app = xw.apps.add()
wb = app.books(filePath)
app.quit()https://stackoverflow.com/questions/46588421
复制相似问题