我可以针对 xlwings 同时运行 Python 脚本吗?

问题描述 投票:0回答:0

长话短说:我一直在与 xlwings 作斗争,当我尝试填充现有电子表格模板时出现随机错误——它的多个独特实例! -- 具有来自同时执行的不同 Python 脚本的值。因此,请考虑使用具有相同形状的独特数据填充模板中的工作表(驱动数据透视表/图表)的多个脚本。例如,假设您有来自 10 个地方的相同格式的天气数据,并且您想要使用这些数据基于一个通用模板创建 10 个不同的带有数据透视表的 xlsx 文件。

同样,这在按顺序运行脚本时效果很好。但是当并行运行它们时(在 Windows 中),使用批处理文件中的“启动”命令,随机错误发生,我留下了挂起的 Excel 实例。

错误如下所示。任何其他/更好的方法/库来完成这个?否则这不会扩展......

Traceback (most recent call last):
  File "Production.py", line 1246, in <module>
    UpdateXLSMasterTemplatesAndSave(stXLSTemp,stOutputFile,dfResults)
  File "Production.py", line 1124, in UpdateXLSMasterTemplatesAndSave
    ws.range('A1').options(index=True).value = dfIn
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 2411, in value
    conversion.write(data, self, self._options)
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\conversion\__init__.py", line 102, in write
    pipeline(ctx)
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\conversion\framework.py", line 79, in __call__
    stage(*args, **kwargs)
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\conversion\standard.py", line 73, in __call__
    ctx.range = ctx.range.resize(len(ctx.value), len(ctx.value[0]))
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 2697, in resize
    return Range(self(1, 1), self(row_size, column_size)).options(**self._options)
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 1804, in __init__
    impl = cell1.sheet.range(cell1, cell2).impl
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 1435, in range
    if cell2.sheet != self:
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 1375, in __ne__
    return not self.__eq__(other)
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 1370, in __eq__
    and self.book == other.book
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 985, in __eq__
    and self.name == other.name
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\main.py", line 1104, in name
    return self.impl.name
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\_xlwindows.py", line 834, in name
    return self.xl.Name
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\xlwings\_xlwindows.py", line 198, in __getattr__
    v = getattr(self._inner, item)
  File "C:\Users\stats\AppData\Local\Programs\Python\Python38\lib\site-packages\win32com\client\dynamic.py", line 628, in __getattr__
    ret = self._oleobj_.Invoke(retEntry.dispid, 0, invoke_type, 1)
pywintypes.com_error: (-2147417848, 'The object invoked has disconnected from its clients.', None, None)

如前所述;试图确保我在每个线程中为模板使用不同的物理文件——没有效果……

parallel-processing xlwings
© www.soinside.com 2019 - 2024. All rights reserved.