2017-10-05 5 views
0

So bin ich neu in der parallelen Verarbeitung, aber ich fing an, es zum parallelen Analysieren mehrerer Excel-Dateien zu arbeiten. Es funktioniert gut mit, wenn ich nur openpyxl benutze, aber das ist ein einfacher XML-Parser, wie ich es verstehe. Wenn ich das Teil enthalten, die XLWings verwendet (Ich mag die Vorteile seiner Fähigkeit nehmen Gleichungen in Excel für die Dateiüberprüfungszwecke zu bewerten), habe ich die folgende Fehlermeldung erhalten:Verwenden von XLWings mit paralleler Verarbeitung

pywintypes.com_error: (-2147221008, 'CoInitialize has not been called.', None, None) 

Dies ist in etwa der Code verwende ich zu initialisieren eine neue XLWings Instanz und eine Arbeitsmappe laden:

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() 

gibt es eine Möglichkeit XLWings zu bekommen mehrere gleichzeitige Instanzen von Excel zu öffnen? Sollte ich versuchen, etwas wie this zu tun? Wenn dem so ist, bin ich nicht sicher, wie die Initialisierung funktionieren würde, wenn Threads XLWings übergeben würden.

Antwort

1

Also habe ich die Lösung gefunden, es war eigentlich überraschend einfach. Habe ich nur noch pythoncom.CoInitialize() von pythoncom Paket vor meinem xw.apps.add() -Aufruf:

ParallelProcessController.py

LoadWorkbook.py

import xlwings as xw 
import pythoncom 

def openWorkbook(self, filePath): 

    pythoncom.CoInitialize() 

    app = xw.apps.add() 
    wb = app.books(filePath) #Note that this is called only once for each workbook. 
    app.quit() 
Verwandte Themen