即使在睡眠期间,每秒点击次数测试仪也会计算点击次数

Posted

技术标签:

【中文标题】即使在睡眠期间,每秒点击次数测试仪也会计算点击次数【英文标题】:Clicks-per-second tester counts clicks even during sleep period 【发布时间】:2021-07-25 17:25:10 【问题描述】:

我想写一个一开始运行良好的点击速度测试器。现在我希望您有一个特定的时间窗口,您可以在其中单击,然后显示最终结果。它将等待 2 秒,然后重新开始。

问题在于,当它重新开始时,它还会计算您在 2 秒暂停中执行的点击次数。我该如何解决这个问题?

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from time import sleep
import time
from pynput import mouse
import os

CPSL=0
CPSR=0
Time=5
mode="Time"#oneDrack, Time, Double
startTime=0
nowTime=0
CPSLT=0
CPSRT=0
double=0
buttosPressed=0

def on_click(x, y, button, pressed):
    global CPSL, CPSR, mode, startTime, nowTime, double, Time, buttosPressed
    if (str(button) == "Button.left" and pressed):
        buttosPressed="CPSL"
        CPSL+=1
    if (str(button) == "Button.right" and pressed):
        buttosPressed="CPSR"
        CPSR+=1
    if (mode == "Time"):
        if (pressed):
            if double==0:
                print("start")
                CPSR=0
                CPSL=0
                if (buttosPressed=="CPSL"): CPSL=1
                else: CPSL=0
                if (buttosPressed=="CPSR"): CPSR=1
                else: CPSR=0
                print(CPSL, end=" ")
                print(CPSR)
                double=1
                startTime=time.time()
            else:
                nowTime=time.time()
                difTime=nowTime - startTime
                if (difTime < Time):
                    print(CPSL, end=" ")
                    print(CPSR)
                else:
                    if (buttosPressed=="CPSL"): CPSL-=1
                    if (buttosPressed=="CPSR"): CPSR-=1
                    print("Finaly")
                    print(CPSL, end=" ")
                    print(CPSR)
                    sleep (2.5)
                    double=0
with mouse.Listener(
        on_click=on_click
) as listener:
    listener.join()

【问题讨论】:

我猜sleep 在这里不合适。用一个计时器来代替开始和停止测量会话呢? 我不明白我该怎么做这样的计时器? 也许这会帮助你理解 tkinter 选项***.com/a/2401181/2932052 好的,我去看看 THX。 【参考方案1】:

sleep 的问题在于它不会阻止事件的发生,但会禁用程序中的事件处理。这就是为什么您在每个睡眠期后都会观察到很多事件。

正如我在评论中提到的,tkinter 是构建此类点击计数器的有效选项,并且它还带来了与 python 一起带来的好处,因此不需要 3rd 方包。 countingdisplaying 阶段之间的变化是由一种“计时器”完成的。实际上,这是一个定时函数调用,使用所有小部件通用的after 方法。

所以这可能是您点击率计数器程序的一个很好的起点:

import tkinter as tk

class App():
    def __init__(self):
        self.root = tk.Tk()
        self.counting = False;
        self.clicks = 0
        self.label = tk.Label(text="", )
        self.label.bind('<Button-1>', self.label_click_left)
        self.label.pack()
        self.update_clock()
        self.root.mainloop()

    def label_click_left(self, event):
        if self.counting:
            self.clicks += 1
            
    def update_clock(self):
        if self.counting:
            self.label.configure(text='counting...')
        else:
            self.label.configure(text=f'(self.clicks/2):.2f CPS')
        self.counting = not self.counting
        self.root.after(2000, self.update_clock)

app=App()

【讨论】:

以上是关于即使在睡眠期间,每秒点击次数测试仪也会计算点击次数的主要内容,如果未能解决你的问题,请参考以下文章

第一章:性能测试的常见指标

如何在情节中随时间绘制每秒点击次数? [复制]

Jmeter性能测试3-性能测试常见指标

sql server 大数据, 统计分组查询,数据量比较大计算十分钟内每秒钟执行次数

基于某业务单登陆场景并发测试实战

APP测试中Monkey如何调试选项参数