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

2024-04-19 19:52:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把鼠标的位置每秒写入一个文件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 = ''

Tags: fromposimportdatagetdatetimeiftime
1条回答
网友
1楼 · 发布于 2024-04-19 19:52:27

你的程序在我的系统上运行得很好。这可能只是因为循环连续运行导致CPU过载。尝试在循环结束时添加time.sleep(0.009),让程序休眠9毫秒,看看是否有帮助。你知道吗

更好的是,由于您只需要毫秒级的精度,因此可以删除对的调用时间。时间()完全依赖时间。睡眠(),例如:

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)

相关问题 更多 >