Моя программа cef python приводит к потере сироты subprocess.exe
в диспетчере задач (я нахожусь на Windows 10). (Они продолжаются бесконечно и используют значительный процессор.)
Но они появляются, только когда я заканчиваю программу с помощью Ctrl- C в командной строке, а не когда я обычно выхожу из окна GUI, например, из Панель задач.
Я знаю, что при использовании cef python, для очистки в конце программы вам нужно
- вызвать cef.Shutdown () .
- удалить все ссылки на браузеры cef
- при использовании cef python с wx Python, удалить ссылки на приложение wx
(Это все продемонстрировано в примере cef python wx Python здесь .)
Я сделал эти вещи в своей программе, как показано ниже:
def start(self):
signal(SIGINT, lambda sig, frame: self.stop())
sys.excepthook = cefpython.ExceptHook
cefpython.Initialize({"multi_threaded_message_loop": True})
self.app = MyApp(clearSigInt=False)
self.app.MainLoop()
self.stop()
def stop(self):
self.app.removeBrowserReferences() # calls `self.browser = None` on my custom wx.App class
del self.app
print("App is deleted.")
cefpython.Shutdown() # I believe it is fine that this terminates the program, since the next line never prints.
print("Shutdown is called.")
Обратите внимание, что этапы очистки в .stop()
выполняются в обоих сценариях ios, либо из MainL oop, завершающего и вызывающего последующий .stop()
, либо из Ctrl- C, запускающего обработчик SIGINT, который равен .stop()
.
Чего еще не хватает для очистки после cef python и wx Python?
A В качестве альтернативы, есть ли способ идентифицировать эти потерянные процессы, чтобы при запуске программы они могли их убить? (Тогда, по крайней мере, они не будут расти после 1.)
РЕДАКТИРОВАТЬ:
Как спросил @Igor, оказывается, что вы МОЖЕТЕ воспроизвести его в неизмененном примере из cef python Сделки рЕПО! Это несколько редко; Я должен запустить его, Ctrl- C, запустить его, Ctrl- C и др. c. но в конце концов я получаю потерянный subprocess.exe, который использует> 20% ЦП бесконечно. (Обратите внимание, что моя система не испытывает особой нагрузки или чего-то в этом роде. Процессор загружается на 1-5% перед воспроизведением проблемы.)
Файлы здесь: https://github.com/cztomczak/cefpython/issues/562