【发布时间】:2012-08-16 15:22:41
【问题描述】:
在我家的 Kubuntu 机器上,我正在运行一个脚本来在每次按键时发出哔哔声,无论哪个窗口或应用程序有焦点,改编自 this insightful page
#!/usr/bin/env python
from Xlib.display import Display
import os
import sys
ZERO=[]
for i in range(0,32):
ZERO.append(0)
ignorelist=[ZERO]
def main():
if os.getuid()==0:
os.system("modprobe pcspkr")
print("Speaker enabled, start as normal user")
sys.exit()
print("If no beep is heard, then run as root to enable pcspkr")
disp = Display()
while 1:
keymap=disp.query_keymap()
if keymap not in ignorelist:
os.system("beep")
if __name__ == '__main__':
main()
该脚本运行良好,但它使我的双核 Intel 机器的两个 CPU 各占 80% 左右,因此我对这台机器几乎无能为力。如何在不干扰其运行的情况下降低这个简单脚本的 CPU 需求?换句话说,无论哪个窗口或应用程序有焦点,它都应该在按键的那一刻发出哔哔声。
如果这在 Python 中是不可能的,我应该考虑哪些其他技术? C?我假设存在一些通知应用程序按键的内核组件:KDE 还如何处理全局快捷方式?我怎样才能让我的申请也收到这些通知?
目标是在按下每个键的那一刻发出哔声,因为我正在训练我的手指在机械键盘上打字而不会触底但不会丢失按键。我刚从 Cherry Browns 毕业到 Cherry Blues,缺乏战术反馈需要一些时间来适应。
请注意,无论哪个窗口具有焦点,任何解决方案都必须发出哔声。该程序旨在用作将在我使用的所有应用程序的后台运行的守护程序。
谢谢。
【问题讨论】:
-
您是否检查过哪些程序正在与 CPU 挂钩?像这样的单线程程序是否可以自行负责似乎值得怀疑。
-
是的,我已经检查并终止此脚本可以消除 CPU 负载。重新启动它会再次创建 CPU 负载。有趣的是,反复按一个键发出哔哔声实际上减少了负载。
标签: python performance keyboard cpu xlib