我想将鼠标的位置每秒写入文件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 = ''
答案 0 :(得分: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)