在python中每秒将鼠标位置写入文件100次

Posted

技术标签:

【中文标题】在python中每秒将鼠标位置写入文件100次【英文标题】:write mouse position to file 100 times a second in python 【发布时间】:2019-06-25 07:55:00 【问题描述】:

我想每秒将鼠标的位置写入文件 100 次。 但我认为它写得很慢。它在开始时大约每秒写入 80 次,并在一段时间后下降到 5 次。 有没有可能让它更快?

import sys
from datetime import datetime
import time
from Xlib import display

def mousepos():
    data = display.Display().screen().root.query_pointer()._data
    return data["root_x"], data["root_y"]

def get_millis():
    return int(round(time.time() * 1000))

file = open("positions.txt", "a")
data = ''
last_pos = 0,0
start = get_millis()
while True:
    if (get_millis() - start)  >= 10:
        mpos = mousepos()
        if mpos != last_pos:
            data += ' \n'.format(mpos[0], mpos[1])
            last_pos = mpos
        start = get_millis()
        if data != '':
            file.write(data)
            data = ''

【问题讨论】:

将睡眠添加到循环中,这样您就不会一直在循环中使用一个完整的 CPU。 ***.com/questions/377454/… 你的计时怎么样?您能否包括您所做的以确定它写入文件的速度? 【参考方案1】:

您的程序在我的系统上运行良好。可能只是因为让该循环连续运行而使 CPU 过载。尝试在循环末尾添加time.sleep(0.009),让程序休眠 9 毫秒,看看是否有帮助。

更好的是,由于您只需要毫秒级的精度,您可以完全移除对 time.time() 的调用,完全依赖 time.sleep(),如下所示:

import sys
from datetime import datetime
import time
from Xlib import display

def mousepos():
    data = display.Display().screen().root.query_pointer()._data
    return data["root_x"], data["root_y"]

file = open("positions.txt", "a")
last_pos = 0, 0
while True:
    mpos = mousepos()
    if mpos != last_pos:
        data = ' \n'.format(mpos[0], mpos[1])
        file.write(data)
        last_pos = mpos
    time.sleep(0.01)

【讨论】:

以上是关于在python中每秒将鼠标位置写入文件100次的主要内容,如果未能解决你的问题,请参考以下文章

AI基础python:openCV——处理鼠标事件

vscode怎样用鼠标拖动复制粘

Python:将鼠标位置保存在一个列表中

当按下鼠标并释放鼠标时,如何保存鼠标位置?

100个 Unity实用技能| 游戏中获取鼠标点击的坐标,并将游戏对象移动到鼠标的点击位置

无法在 Roblox 上移动鼠标