Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中每秒将鼠标位置写入文件100次_Python_File Io_Xlib - Fatal编程技术网

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

在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

我想每秒将鼠标位置写入文件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过载。尝试在循环结束时添加
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。你的时间安排得怎么样?您可以包括在您所做的工作中,以确定它写入文件的速度吗?