root.query_pointer()._ data导致高CPU使用率

时间:2016-10-14 19:35:09

标签: python linux

我是Python,编程和Linux的总菜鸟。我写了一个简单的python脚本来跟踪各种应用程序的使用时间。我注意到经过一段时间后,python正在疯狂地利用100%的CPU。事实证明,获取鼠标位置的代码导致了问题。

我尝试在空的python脚本中运行此代码:

import time
from Xlib import display

while True:
    d = display.Display().screen().root.query_pointer()._data
    print(d["root_x"], d["root_y"])
    time.sleep(0.1)

它可以工作,但CPU使用率会随着时间的推移而增加。使用time.sleep(1)需要一些时间,但迟早会达到疯狂的价值。

我在Ubuntu 16.04.1 LTS上使用Python 3.5和python3-xlib 0.15

1 个答案:

答案 0 :(得分:1)

为了使CPU保持稳定,我将display.Display().screen()置于循环之前,这样它就不必一直做很多工作。屏幕不应该改变,也不应该改变,所以在之前设置它是有意义的。

import time
from Xlib import display
disp = display.Display().screen()
while True:
    d = disp.root.query_pointer()._data
    print(d["root_x"], d["root_y"])
    time.sleep(0.1)

我对它进行了测试,对我来说它保持在0.3%左右。

希望这有助于:)