我正在使用Python解釋器位於Libreoffice/Openoffice內部的「內部」(Libreoffice是宿主進程)版本的Python UNO。我想讓代碼非阻塞......即一旦代碼被調用爲宏,它會啓動第二個線程,並將主線程返回到Office,以便它不會阻止UI,同時繼續運行非常冗長的過程(10-20分鐘執行時間)。Python UNO和線程
當我嘗試這個,LibreOffice永遠凍結。我搜索了幾乎所有地方,但除了在第二個線程中導入scipy的奇怪引用,然後在等待該線程時阻塞(myrhread.join()),似乎沒有這樣做。
另外,是否有可能創建一個新的ServiceManager,以便我可以調用第二個進程,然後鏈接回ServiceManager,以便以正常方式返回到LibreOffice而不用「鎖定」 「?
您好,歡迎來到StackOverflow!請發佈迄今爲止已嘗試的代碼的簡化版本,即凍結的代碼。幾個問題:PyUNO代碼是否被調用爲一個宏(例如'Tools - > Macros - > Run Macro'),或者使用監聽實例從外部調用?此外,漫長的過程完成了什麼 - 它是修改Writer文檔還是在外面做某些事情,例如在操作系統的其他地方創建文件? –
如上所述,它被調用爲宏(住在LibreOffice進程內)。如果它在外面,那麼線程就不是必需的。代碼慢的原因是我在實驗後發現創建註釋非常慢。我需要插入1500個單元格註釋。沒有註釋,它會在幾秒鐘內運行。 –