在python中每秒将鼠标位置写入文件100次
我想每秒将鼠标位置写入文件100次。 但我认为它写得很慢。开始时大约每秒80次,过一段时间后下降到5次。 有可能使它更快吗在python中每秒将鼠标位置写入文件100次,python,file-io,xlib,Python,File Io,Xlib,我想每秒将鼠标位置写入文件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"], d
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过载。尝试在循环结束时添加
time.sleep(0.009)
,使程序睡眠9毫秒,看看是否有帮助
更好的是,因为您只需要毫秒级的精度,所以可以完全删除对time.time()的调用,并完全依赖time.sleep(),如下所示:
导入系统
从日期时间导入日期时间
导入时间
从Xlib导入显示
def mousepos():
数据=display.display().screen().root.query\u pointer()。\u数据
返回数据[“root\u x”],数据[“root\u y”]
文件=打开(“positions.txt”、“a”)
最后位置=0,0
尽管如此:
mpos=mousepos()
如果mpos!=最后位置:
数据='{}{}\n'.格式(mpos[0],mpos[1])
文件写入(数据)
最后位置=mpos
睡眠时间(0.01)
您的程序在我的系统上运行良好。这可能只是因为循环持续运行,导致CPU过载。尝试在循环结束时添加
time.sleep(0.009)
,使程序睡眠9毫秒,看看是否有帮助
更好的是,因为您只需要毫秒级的精度,所以可以完全删除对time.time()的调用,并完全依赖time.sleep(),如下所示:
导入系统
从日期时间导入日期时间
导入时间
从Xlib导入显示
def mousepos():
数据=display.display().screen().root.query\u pointer()。\u数据
返回数据[“root\u x”],数据[“root\u y”]
文件=打开(“positions.txt”、“a”)
最后位置=0,0
尽管如此:
mpos=mousepos()
如果mpos!=最后位置:
数据='{}{}\n'.格式(mpos[0],mpos[1])
文件写入(数据)
最后位置=mpos
睡眠时间(0.01)
将睡眠添加到循环中,这样您就不会一直在循环中使用一个完整的CPU。你的时间安排得怎么样?您是否可以将确定写入文件速度的步骤包括在内?将睡眠添加到循环中,这样您就不会一直在循环中使用一个完整的CPU。你的时间安排得怎么样?您可以包括在您所做的工作中,以确定它写入文件的速度吗?