Скорость программы! Python и война с циклами :/

Kakrik

Новичок
Пользователь
Ноя 6, 2021
1
0
1

Привет, гении из мира питона ;)
Имеется небольшой код, задача которого найти определённый цвет пикселя на скриншоте. Ну вот вопрос. Как можно повысить быстродействие этой программы? Миллион итераций - это ой как не профессионально))
Python:
from PIL import Image,ImageDraw
import pyautogui
while True:
  image = pyautogui.screenshot (region = (700,100, 850, 900))
    for x in range(image.size[0]):
      for y in range(image.size[1]):
        if image.getpixel((x, y))[0]==164:
          print("Я нашёл!")


Я попытался увеличить производительность экрана, уменьшив размер скриншота, зная, что пиксель появляется именно в этой области. Может это можно сделать вообще с помощью какой-то библиотеки? (Numpy?) Подскажите, направьте на правильный путь!
Спасибо.​
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
без while и принта, и без ограничения региона ваш код у меня выполнился за 2 секунды, для питона в принципе это норма, он не отличается особым быстродействием...

можно скрин сделать через pillow, перевести его в массив numpy и по нему уже делать поиск средствами numpy, это будет быстрее чем питоновские циклы...
 
Последнее редактирование:

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
Разве, что добавить многопоточность.
 

Форум IT Специалистов