0 / 0 / 0
Регистрация: 06.10.2020
Сообщений: 13

numba jit внутри класса, либо с обращением к атрибутам экземпляра

26.10.2020, 12:41. Показов 2812. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Прошу прощения, если пишу не в том разделе.

Есть написанная программа, в которой описана функция с достаточно массивным вычислением, реализованная без использования ООП. Мне удалось очень сильно ускорить выполнение этих вычислений с простым использованием декоратора @njit.

Так как в дальнейшем эта функция должна стать модулем программы с PyQt5 интерфейсом, то мне порекомендовали научиться работать с ООП. Мне удалось создать свой класс, в который эта функция вписалась в качестве метода.

Но проблема в том, что @njit не работает внутри класса. Даже вынося функцию вне класса и просто обращаясь из неё к атрибутам экземпляров @njit не работает. Я попытался явно указать типы данных - не помогло.

Конечно попытался использовать @jitclass, но получаю ошибку:

"TypeError: wrap() takes 1 positional argument but 7 were given"

7 аргументов у меня передается при инициализации экземпляра класса в метод __init__. Без декоратора @jitclass работает.

Может кто-то может помочь выбрать правильное направление дальнейших действий и избавить меня от многих часов метаний в поисках корректного подхода?

Буду очень благодарен, спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2020, 12:41
Ответы с готовыми решениями:

Закрытие доступа к атрибутам внутри класса
Как известно, есть обходные пути для получения значений, закрытых через 2 нижних подчеркивания private. Может библиотека какая есть, чтобы...

Создание экземпляра класса внутри другого класса
Добрый вечер. Стоит задача сделать поле ввода с валидацией данных. Нужно чтобы пользователь не мог ввести более 1 символа в поле. И...

Видимость экземпляра класса внутри класса
Здравствуйте! Пытаюсь вывести openCV видео в QT виджете. На данный момент в слоте обновления картинки инициализирую класс cv::VideoCapture...

2
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5971 / 3734 / 1098
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
26.10.2020, 13:04
Лучший ответ Сообщение было отмечено 9FiZiK как решение

Решение

Цитата Сообщение от 9FiZiK Посмотреть сообщение
Даже вынося функцию вне класса и просто обращаясь из неё к атрибутам экземпляров
Что-то вы делаете не так.

Попробуйте тупо оставить функцию. Как-то так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
class Fox:
    def __init__(self, ...):
        self.attr1 = [1,2,34] 
    
    def run(self):
        data = list(self.attr1)
        result = func(data)
        self.attr1 = result
 
@njit
def func(data):
    return data + [13]

То есть сделайте чистую функцию, которая принимает на вход простые примитивные данные и возвращает результаты расчётов. Да, придётся написать обёртку над функцией, чтобы правильно подготовить данные для неё и от неё.
1
0 / 0 / 0
Регистрация: 06.10.2020
Сообщений: 13
27.10.2020, 11:55  [ТС]
Рыжий Лис, Огромное спасибо за совет!

Отличный пример, который идеально зашел в структуру моей программы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2020, 11:55
Помогаю со студенческими работами здесь

Удаление экземпляра класса внутри класса
Ситуация: У меня есть класс Т34, в этом классе есть метод destroy, который должен удалять экземпляр класса. Вопрос; возможно ли удалить...

Имя экземпляра объекта внутри класса на С++
Добрый день. Подскажите, пожалуйста, как узнать имя экземпляра объекта внутри класса на С++ ? В частности, мне надо имя экземпляра...

Создание экземпляра класса внутри самого себя
Наткнулся на такую конструкцию class Myclass { function __construct() { //...... } public...

Как можно изменить атрибут экземпляра одного класса при добавлении/изменении экземпляра другого класса
Мне нужно, чтобы при создании города/деревни уже существующей области (т.е. уже создана область с таким названием) изменялись атрибуты...

Ошибка компиляции: Супероператор можно использовать только внутри конструктора класса экземпляра.
package { import flash.error; import flash.events.*; import flash.net.Socket; class ESocket extends Socket { ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru