Я автоматизирую симуляцию 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!