Невозможно завершить процесс, запущенный win32com.client - PullRequest
0 голосов
/ 05 сентября 2018

Я автоматизирую симуляцию Aspen Plus через клиент ActiveX. Мой код выглядит следующим образом:

import win32com.client as win32

aspen = win32.Dispatch('Apwn.Document')

# Stuff to initialize, mapping inputs and run simulation

aspen.Save()
aspen.Quit()
del aspen
aspen = None

Но процесс не убит, все равно появляется в окне диспетчера задач.

Я пытался использовать EnsureDispatch (), pythoncom.CoInitialize () и убить его с помощью модуля подпроцесса. Ничего не работает Когда я заставляю его убить через cmd:

taskkill /im AspenPlus.exe /f

Я получаю следующее сообщение об ошибке:

ОШИБКА: процесс "AspenPlus.exe" не может быть завершен с PID 1100.

Причина: нет активного экземпляра задачи.

Проблема в том, что я хочу, чтобы эта автоматизация решала задачу оптимизации, а это значит, что мне нужно несколько раз запустить симуляцию в цикле, и она объединит эти процессы "без экземпляров". Каждый из них занимает 117 МБ памяти, поэтому он рухнет.

Есть ли какое-нибудь решение, чтобы действительно убить процесс внутри моего кода Python?

Спасибо в avance!

...