2016-10-14 3 views
2

저는 Python, 프로그래밍 및 Linux에서 멍청한 놈입니다. 나는 다양한 애플 리케이션의 사용 시간을 추적하는 간단한 파이썬 스크립트를 썼다. 나는 약간의 시간이 지나면 파이썬이 CPU의 100 %를 사용하는 열매 맺는 것을 보았다. 마우스 위치를 얻는 코드가 문제를 일으키는 것으로 밝혀졌습니다. 나는 빈 파이썬 스크립트에서이 코드를 실행하려고했습니다root.query_pointer() ._ 데이터로 인해 CPU 사용률이 높습니다.

:

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)으로 시간이 좀 걸리지 만 머지 않아 미친 값에 도달합니다. 이 모든 너무 많은 일을 할 필요가 없었어요 그래서

내가 python3-Xlib를 파이썬 3.5을 사용하여 우분투 16.04.1 LTS에있어 0.15

답변

1

내가 루프 전에 display.Display().screen()을 넣어 꾸준한 보통 CPU를 유지하려면 시간. 화면이 변경되어서는 안되며 그 값은 이전에 설정하는 것이 좋습니다.

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 %를 유지한다.

은이 :

+0

와우 와서 어떻게 그것을 테스트하지 않았다 도움이되기를 바랍니다 ... 여기에 0.3 %, 너무 감사합니다! 이전 코드가 증가하고 CPU 사용의 결과 왜 그러나 나는 아직도 알고 싶습니다 시간이 지남에, – RainbowTractor

+0

난 xlib 함께 일한 적이 있지만 그것은 display.Display(). screen() 함수와 함께 할 것입니다 - 나는 무엇을 볼 수 있지만 아무것도 찾을 수없는 설명서를 찾으려고했습니다. 함수가 프로그램이 닫힐 때까지 완료되지 않은 작업 (예 : 디스플레이 관리자에 연결하는 등)이 있었기 때문에 발생했을 수 있습니다. 따라서 이미 실행중인 작업을 계속 다시 실행하고있었습니다. 이것은 보인 [github 페이지] (https://github.com/python-xlib/python-xlib)입니다. – Orange

관련 문제