为了账号安全,请及时绑定邮箱和手机立即绑定

检查键盘输入使用过多的 CPU 使用率,我的代码有问题吗?

检查键盘输入使用过多的 CPU 使用率,我的代码有问题吗?

千巷猫影 2021-12-17 15:36:02
我正在制作一个简单的音乐播放器,这样我就可以在全屏应用程序中暂停音乐。代码工作正常,但我注意到它使用了大约 15% 的 cpu 使用率。我只是想知道我的代码是否有问题。import keyboardlistedSongs = []currentSong = "idk"while True:    if keyboard.is_pressed('alt+k'):        i = 1        paused = False    elif keyboard.is_pressed('alt+q'):        break    elif keyboard.is_pressed('alt+s'):        if currentSong not in listedSongs:                listedSongs.append(currentSong)                print(listedSongs)任何帮助,将不胜感激 :)
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

它消耗这么多资源的最大原因是:


while True:

本质上,程序永远不会停下来等待任何事情。它不断地、一遍又一遍地检查键盘上的按钮是否被按下。一种更好的方法(在计算机上成本更低)是分配一个“回调”以在您按下所需键时调用,并使程序在两次按键之间休眠。该keyboard库提供此功能:


import keyboard

import time


listedSongs = []

currentSong = "idk"

exit = False  # make a loop control variable


def alt_k():

    i = 1

    paused = False


def alt_q(): 

    exit = True


def alt_s():

    if currentSong not in listedSongs:

        listedSongs.append(currentSong)

        print(listedSongs)


# assign hooks to the keyboard

keyboard.on_press_key("alt+k", alt_k)  # on press alt+k, execute alt_k()

keyboard.on_press_key("alt+q", alt_q)

keyboard.on_press_key("alt+s", alt_s)


# main loop

while not exit:

    keyboard.wait()  # "block" for input (essentially, do nothing until a key is pressed and yield CPU resources to anything else that wants them)


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信