Не знаю как можно оптимизировать данный код, он очень сильно нагружает пк и работает медленно
Я еще новичок, так что приму критику. Переменные x, x1, y, y1 это координаты положения курсора мыши. Я сравниваю их для определения движения мыши. Я думаю что сильно нагружает именно цикл while, но я не знаю как от него избавится. Сравнение координат должно происходить только при зажатой клавише "CTRL". вот мой код:
import pyperclip
import pyautogui as pg
import time
import keyboard as kb
from googletrans import Translator
def copy_clipboard():
pg.hotkey('CTRL', 'C')
time.sleep(0.5) # ctrl-c is usually very fast but your program may execute faster
return pyperclip.paste()
def translate():
time.sleep(3)
translator = Translator()
con = copy_clipboard()
result = translator.translate(str(con), src='ru', dest='en')
cont = result.text
print(cont)
pyperclip.copy(cont)
while True:
a = 1
x, y = 0, 0
while kb.is_pressed('CTRL'):
if a == 1:
a = 0
continue
x1, y1 = x, y
x, y = pg.position()
if x != x1 or y != y1:
if abs(x-x1) >= 100:
if x-x1 > 0:
if x != 0 and x1 != 0:
translate()
else:
if x != 0 and x1 != 0:
print('Движение влево')
print(x, x1)
elif abs(y-y1) >= 100:
if y-y1 > 0:
if y != 0 and y1 != 0:
print('Движение вниз')
print(y, y1)
else:
if y != 0 and y1 != 0:
print('Движение вверх')
print(y, y1)
time.sleep(1)
Ответы (1 шт):
time.sleep всегда ставить в начало цикла на случай попадания continue(полагаю в этом и проблемма), во втором цикле так же исспользовать sleep, значения которого должны быть 0.1 тк одна секунда слишком большое время. Изменить подход- исспользовать модуль pynput, который будет вызывать функцию при нажатии и отпускании клавиш, а не впадать в цикл. То есть цикл не нужен, нужно вызывать функцию при нажатии контрл, которая сохраняет координаты; нужно вызывать вторую функцию при отпускании контрл которая и выполнит основную задачу.