Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071

Ускорить хук

02.07.2020, 11:36. Показов 847. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как ускорить мой хук?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from sys     import _current_frames;
from inspect import currentframe as _current_frame;
 
from threading import Thread;
 
def get_all_frames():
    c = _current_frame();
    frames = list(_current_frames().values());
    for frame in frames:
        if frame != c:
            yield frame;
        while(frame := frame.f_back):
            if frame != c:
                yield frame;
 
def get_current_variables(without_frames=[]):
    without_frames.append(_current_frame());
    frames = get_all_frames();
    variables = {}
    for frame in frames:
        if frame not in without_frames:
            variables.update(frame.f_locals);
        while(frame := frame.f_back):
            if frame not in without_frames:
                variables.update(frame.f_locals);
    return variables;
 
def __listener__():
    prev = get_current_variables([_current_frame()]);
    while True:
        cur = get_current_variables([_current_frame()]);
        for name in cur.keys():
            if name in prev.keys():
                if prev[name] != cur[name]:
                    print(name, 'was changed', prev[name], '>>', cur[name]);
            else:
                print(name, 'was created', cur[name])
        prev = cur;
__listener_thread__ = Thread(target=__listener__, daemon=True);
__listener_thread__.start();
 
x = 0;
while True:
    x += 1;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2020, 11:36
Ответы с готовыми решениями:

Хук Python
Надо написать хук, срабатывающий при создании либо изменении переменной. Например: def hook(frame,name,value): ...

Ускорить
Как мне ускорить этот код? def translate(text,from_lang,to_lang): import requests url =...

Ускорить GET запрос
При запуске кода ниже, всё выполняется за 1-2 секунды video_data = requests.get(video_url) Но мне нужно получить текст: video_data =...

7
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
02.07.2020, 11:43
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
Как ускорить мой хук?
чтобы ускорить надо понять что тут происходит, какие замеры времени при каких условиях.

сразу видно что кучи вайл(медленных) и фор лишних, переписывай все на генераторы и листкомпс
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
02.07.2020, 11:55  [ТС]
Welemir1, спасибо. Попробую.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
03.07.2020, 19:24  [ТС]
Welemir1, а если добавить if cur.keys() != prev.keys()?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
03.07.2020, 19:41
Цитата Сообщение от Hyppoprogramm Посмотреть сообщение
а если добавить if cur.keys() != prev.keys()?
Естественно, цикл можно заменить на простое сравнение. Но тогда ты не сможешь залогировать изменения.
Либо меняй на set(prev.keys()) - set(cur.keys()) и получишь разницу - тоже set. Но у множеств есть свои нюансы...
И опять ты не сможешь узнать точно что было изменено, а что создано.

...Хотя, может и сможешь. Но тут понадобится не одна операция множествами.
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
04.07.2020, 10:10  [ТС]
Garry Galler, и так уже всё так сделал.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
09.07.2020, 06:28
Цитата Сообщение от Garry Galler Посмотреть сообщение
И опять ты не сможешь узнать точно что было изменено, а что создано.
Как вариант: можно собрать свой интерпретатор. Правда, придётся писать на Си (?).
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.07.2020, 19:11
Пс, парень, не хочешь создать свой язык программирования? https://llvm.org/docs/tutorial... index.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2020, 19:11
Помогаю со студенческими работами здесь

Ускорить алгоритм
А можно попросить, пожалуйста, еще помочь с другим примером? В начале дана длина list(набор чисел, он же nu), потом сам list(-...

Ускорить программу
Есть программа, но выполняется медленно. Сириус не принимает. Нужно как-то оптимизировать. def qwer(): n = int(input()) P =...

Ускорить список
Есть функция куда подаётся 2 параметра массив и число Нужно вернуть индексы первой пары элементов массива сумма которых равна входному...

Ускорить цикл
a=1 a1=1 i1=0 n=int(input()) for i in range(1,n+1): if n%i==0: i1=0 for e in str(i): ...

Как ускорить
Задача Рассмотрим последовательность целых чисел длины N. По ней с шагом 1 двигается “окно” длины K, то есть сначала в “окне” видно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru