@Name_Zagotovka

Python — как облегчить скрипт Python?

Есть крипт, работа которого заключается в след.
Сделал скрин экрана
обрезал скрин при необходимости
сравнил с образцом (образец сохранен на диск)
при получении результата нажимаем кнопочки.
имеем след код

from PIL import ImageGrab
from cv2 import matchTemplate,minMaxLoc,imread,cvtColor,COLOR_RGB2BGR,TM_CCOEFF_NORMED
from numpy import array
from pyautogui import moveTo,click,keyDown,keyUp,press
from time import sleep,time
from random import choice
#таких функций около 8
def chek_some(all_img):
    koof=0.9
    img=all_img.crop(какаято область)
    img=cvtColor(array(img), COLOR_RGB2BGR)
        res = matchTemplate(img,какойто изображение,TM_CCOEFF_NORMED)
        min_v, max_v, min_pt, max_pt = minMaxLoc(res)
        if max_v>=koof:
            stat=True
            break
        else:
            stat=False
    return(stat)
#таких функций около 6	
def do_some(some_stat):
    
    click(some_stat)
    sleep(0.2)
    some_stat+=20
    click(some_stat)
		
def main():
    #в данной функции описано порядок выполениня функций chek и do
	all_img=ImageGrab.grab()
	some_stat1=chek_some1(all_img)
	some_stat2=chek_some2(all_img)
	some_stat3=chek_some3(all_img)
	some_stat4=chek_some4(all_img)
	if some_stat1:
		do_some1(some_stat1):
    elif some_stat2:
        do_some2(some_stat2)
    elif some_stat2 and some_stat3:
        do_some3(some_stat3)
while True:
    main()


При этом при запуске весь скрипт грузит цп на 25 процентов(при условии что сама программа, с которой считываем изображение занимаем не более 10 проц цп).
Вопрос:
Каким образом возможно снизить загрузку на цп, если это возможно при подобной задаче вовсе...
ПС в примере могут был синтаксические\логические ошибки(
  • Вопрос задан
  • 326 просмотров
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Проблема в том, что задержка тут имеется только в do_some*, а в остальных случаях ваш скрипт с максимальной возможной скоростью скриншотит, кропает и сравнивает картинки. То есть программа написана так, что должна и будет утилизировать своим процессом всё ядро полностью. Я так понимаю проц у вас четырёхядерный, отсюда и 25 процентов.
Добавьте задержку в основной цикл проверки и вы сильно разгрузите ваш процессор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы