Как мне оптимизировать работу бесконечного цикла while?
У меня есть такой цикл(В функции, да):
def check_for_warface():
found_warface = False
while not found_warface:
for proc in psutil.process_iter():
if proc.name() == warface:
found_warface = True
find_and_terminate_procexp()
warface_process = psutil.Process(proc.pid)
time.sleep(1)
warface_process.wait()
start_procexp()
check_for_warface()
Пока цикл while ведёт проверку, экзешник(Я конвертирую код в .exe и оставляю в автозагрузке для работы в фоне) потребляет вплоть до 15% процессора, и мне это не нравится, ибо последний у меня очень слабый. Как я могу оптимизировать его работу, снизить потребление процессора? Полный код скидываю чуть ниже:
import psutil
import os
import subprocess
import time
from psutil import Process
warface = "Game.exe"
ProcessExplorer = "procexp.exe"
icon = 'icon.ico'
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)
def find_and_terminate_procexp():
for proc in psutil.process_iter():
if proc.name() == ProcessExplorer:
for child in proc.children(recursive=True):
child.terminate()
proc.terminate()
def start_procexp():
subprocess.Popen(r"C:\Program Files (x86)\ProcessExplorer\procexp.exe /t")
def check_for_warface():
found_warface = False
while not found_warface:
for proc in psutil.process_iter():
if proc.name() == warface:
found_warface = True
find_and_terminate_procexp()
warface_process = psutil.Process(proc.pid)
time.sleep(1)
warface_process.wait()
start_procexp()
check_for_warface()
def main():
check_for_warface()
if __name__ == '__main__':
main()
У меня нет идей, как я мог бы оптимизировать его работу, к сожалению.
Ответы (1 шт):
Есть только 2 варианта, либо ставить time.sleep() побольше, либо сделать детект вручную, (т.е. при нажатии сочетания клавиш, например: alt+f6) ещё пару вариантов: обновить ПК, либо попробовать перенести данную задачу на язык C#, т.к. на нем эту программу написать будет несложно, + в интернете ооооочень много исходников.