функции Python без прохождения циклов
Делаю скрипт, в котором при нажатии кнопки мыши должен выводиться текст 1 в течении 2-х секунд. Через 2 секунды после появления текста должен появляться текст 2. С бесконечным циклом все работает. Можно ли добиться того же результата без прохождения циклов, которые нагружают процессор Raspberry Zero.
import pynput
import time
from pynput import mouse
t = time.time()
tst = 'not'
# Бесконечный цикл
for i in range(10000):
# Функция отслеживания нажатия мыши
def on_click(x, y, button, press):
global tst
global t
tst = 'test'
t = time.time()
listener_mouse = mouse.Listener(on_click = on_click)
listener_mouse.start()
# Функция вывода текста
def start_stop():
global t
if time.time() - t < 2:
print('start', tst)
else:
print('__stop__', tst)
if __name__ == '__main__':
start_stop()
Ответы (1 шт):
Автор решения: vadim vaduxa
→ Ссылка
from pynput import mouse
import threading, datetime
def on_click(x, y, button, pressed):
if pressed:
print(f'{datetime.datetime.now().strftime("%H:%M:%S")} TEXT1 {x}, {y}')
threading.Timer(2, lambda: print(f'{datetime.datetime.now().strftime("%H:%M:%S")} TEXT2 {x}, {y}')).start()
with mouse.Listener(on_click=on_click) as listener:
listener.join()
out:
12:01:30 TEXT1 963, 490
12:01:32 TEXT2 963, 490
12:01:34 TEXT1 963, 491
12:01:34 TEXT1 1097, 516
12:01:36 TEXT2 963, 491
12:01:36 TEXT2 1097, 516