@smuratov2017

While True грузит процессор и снижает отзывчивость системы. Как исправить?

В итоге пока запущен скрип, то клавиатура реагирует на нажатия с большой задержкой. Попробовал решить установкой ограничением на использование ЦП в Диспетчере задач, но в итоге получил только небольшое снижение задержки и полностью загруженное ядро. Сам цикл:

import keyboard
import pymem
from pymem import process
import time
from offsets import *

_process = pymem.Pymem("csgo.exe")
_client = pymem.process.module_from_name(_process.process_handle, "client.dll").lpBaseOfDll


def BHOP():
    while True:
        try:
            if keyboard.is_pressed("space"):
                player = _process.read_int(_client + dwLocalPlayer)
                jump = _client + dwForceJump
                player_state = _process.read_int(player + m_fFlags)

                if player_state == 257 or player_state == 263:  # 257 - player on ground, 263 - crouch
                    _process.write_int(jump, 5)
                    time.sleep(0.1)  # Чем меньше задержка - тем лучше bhop, но большая нагрузка на процессор
                    _process.write_int(jump, 4)
        except pymem.exception.MemoryReadError:
            pass
            
BHOP()
  • Вопрос задан
  • 453 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Условие отрабатывает огромное количество раз.
Лучше использовать нормальные хуки из keyboard, они вроде есть, либо pynput:
from pynput.keyboard import Key, Listener

def on_press(key):
    if key == Key.space:
        # тут процесс чтения и записи памяти

with Listener(on_press=on_press) as listener:
    listener.join()


По крайней мере с while == True:
6057928c90295476933341.png

pynput:
605792a14a92a042791278.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы