Python多线程COM对象

时间:2018-08-03 10:20:55

标签: python python-multithreading win32com

我有3个python模块,

  

main.py

     

client.py

     

interface.py

interface.py是Qt UI模块,因此与该问题没有任何联系。

main.py导入interface.py和client.py类并执行程序的主要功能。

client.py是所有核心功能所在的核心模块。

client.py(format_excel函数)中的一个函数是调用win32com.client执行excel操作,它将根据给定的输入修改excel的输出。

这里的问题是当我在main.py中启动一个线程来运行client.py中的函数(format_excel函数)时,它给了我类似的错误。

  

该应用程序调用了一个编组为不同线程的接口。

我的代码如下(简化)

client.py

class Formatter:
    def __init__(self):
        self._excel = win32.dynamic.Dispatch('Excel.Application')

    def format_excel(self, info_list):
        pythoncom.CoInitialize()
        self._excel.Workbooks.Add()
        # other codes

main.py

self._data包含一些从GUI捕获的信息,因此我没有添加到代码段中

class Main:
    def __init__(self):
        self._format = Formatter()
        self._data = []

    def start(self):
        t = threading.Thread(target=self._format.format_excel, args=[self._data])
        t.start()
        # other codes

这里需要一些帮助。

0 个答案:

没有答案