Задать вопрос
@bychok300

Как лучше сделать посчет времени?

Есть такой вот кусок кода, который выводит скорость движения курсора и время, когда курсор двинулся. Задача посчитать совокупное время движения курсора с момента запуска кода
import sys 
import math
import time
from datetime import datetime


from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from toolz.itertoolz import second

# scriptStartAt = datetime.strftime(datetime.now(), "%Y.%m.%d %H:%M:%S")
# print('Script start at : ', scriptStartAt)

#time.sleep(3)

class Frame:
    def __init__(self, position, time):
        self.position = position
        self.time = time

    def speed(self, frame):
        d = distance(*self.position, *frame.position)
        time_delta = abs(frame.time - self.time)
        return d / time_delta

def distance(x1, y1, x2, y2):
    return math.sqrt((x2 - x1)**2 + (y2-y1)**2)

def get_current_cursor_position():
    pos = QCursor.pos()
    return pos.x(), pos.y()

def get_current_frame():
    return Frame(get_current_cursor_position(), time.time())

#спрашиваем время каждую минуту
# def check_last_time():
#     nowTime = datetime.now()
#     print('Script still runing :', nowTime)
#     time.sleep(60)

if __name__ == '__main__':
    
    
    
    app = QApplication(sys.argv)

    last_frame = get_current_frame()

    while True:
        #объясвляем время
        nowTime = datetime.now()
        mouseWasMoveAt = nowTime.strftime('%H:%M:%S')
        new_frame = get_current_frame()
        
        if new_frame.speed(last_frame) != 0:
            print(mouseWasMoveAt)
            last_frame = new_frame
            
            time.sleep(0.07)


на выхлопе имеем такие значения:

24.923661403031307 12:29:06
387.6390624573542 12:29:07
394.4926824122518 12:29:07
364.6319448618099 12:29:07
265.4365222073813 12:29:07
130.94569163049468 12:29:07
2.2565370492799803 12:29:09
2755.4110208927873 12:29:09
4424.753655893077 12:29:09
1333.456662360851 12:29:09
378.76671822675877 12:29:09


Я думал о том, что бы удалить все строки, где время одинаковое, тогда каждая строка будет ровняться 1-й секунде и просто сосчитать количество строк. Но не особо хочется описывать это удаление строк, потом суммирование, долго это будет. Есть способ сделать это проще? Я думаю может таймер какой-то? что бы при движении он начинал отсчет и при остановке курсора - останавливался. Но если это все будет выводиться в консоль, то будет много увеличивающихся секунд и считать будет еще сложнее.
  • Вопрос задан
  • 205 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
21 дек. 2024, в 06:04
15000 руб./за проект
21 дек. 2024, в 01:12
1000 руб./за проект
20 дек. 2024, в 22:55
1500 руб./за проект