Найти - Пользователи
Полная версия: Скорость работы и оптимизация кода
Начало » Python для новичков » Скорость работы и оптимизация кода
1 2 3 4 5
vir.mirabilis
Я пишу программу, в которой будет очень много зависимостей между классами, функциями и условными операторами. Своего рода ИИ, анализирующий схему и на основе анализа выбирающий применяемые функции. Учитывая, что язык интерпретируемый, боюсь что все это будет медленно работать.
Потому вопрос:

1. Отличается ли скорость выполнения
-заданной заранее и после примененной функции
-линейного кода
-метода класса?
И как? Стоит ли выигрыш в скорости усложнения читабельности кода, если писать его линейно?

2. Как сделать объект принадлежащим сразу двум классам, не создавая класс-наследник? Это в принципе возможно?

3. Как лучше считывать большой объем текстовой информации из файла и сортировать ее построчно? Создавать массив, сортировать и заново переписывать не очень разумно. И может ли Питон импортировать из текстового файла переменные без преобразования?

4. К вопросу о массиве. Нужно сортировать строки в файле по убыванию числового значения в начале/середине строки каждый раз перед закрытием файла. Значения изменяются каждый раз при работе программы, плюс добавляются новые строки. Как это реализовать? О_о

5. Можно ли импортировать декораторы?

Заранее спасибо
igor.kaist
Говорят, что преждевременная оптимизация это зло. Может стоит написать, а потом искать узкие места, если скорость не устроит?
vir.mirabilis
В общем да, просто хочу заранее выбрать более эффективные алгоритмы
gkraser
vir.mirabilis
Стоит ли выигрыш в скорости усложнения читабельности кода, если писать его линейно?
Не стоит,пока явно не стоит условие: “Сделать вот этот _работающий_ код быстрее на N%”
vir.mirabilis
Как сделать объект принадлежащим сразу двум классам, не создавая класс-наследник? Это в принципе возможно?
В принципе - возможно все, однако формулировка хотелки несколько выбила меня из колеи. Вроде можно, но причем(!) тут наследник?
vir.mirabilis
И может ли Питон импортировать из текстового файла переменные без преобразования?
да нет наверное…
vir.mirabilis
4. К вопросу о массиве. Нужно сортировать строки в файле по убыванию числового значения в начале/середине строки каждый раз перед закрытием файла. Значения изменяются каждый раз при работе программы, плюс добавляются новые строки. Как это реализовать? О_о
Прочитать данные из файла. Отсортировать. Записать обратно.
vir.mirabilis
Можно ли импортировать декораторы?
можно. Это функции
vir.mirabilis
gkraser
В принципе - возможно все, однако формулировка хотелки несколько выбила меня из колеи. Вроде можно, но причем(!) тут наследник?
Ну например, есть 4 класса: class1, class2, class3, class4. Надо создать 4 объекта: A, имеющий все атрибуты class1 и class 2, B имеющий атрибуты class1 и class3, C - class2 и class3 и D имеющий атрибуты class 2 и class4. Как это сделать? О_о
dimabest
vir.mirabilis
Как это сделать?
множественное наследование?
Isem
А что за класс объекта A? Что он из себя представляет?
Так сделать можно (например, инкапсуляцией и реализацией метода __getattr__, то есть делегирование), но сдается мне, что вы допускаете ошибку проектирования. Не знаю вашу задачу, поэтому не могу сказать конкретно.
uhbif19
vir.mirabilis
Напрямую нет. Но чем вас не устраевает множественное наследование ?
vir.mirabilis
Нужно чтобы программа сама определяла, является ли соединение органическим или нет (и создавала для него класс) и является ли соединение ионом, радикалом, молекулой и проч.(и добавляла в него атрибуты соответствующего класса). Ну или наоборот. Для органики - свой набор методов, для неорганики - свой, так же и с каждым видом частиц. Есть идея определять при создании объекта приписывать ему класс соответствующей частицы (ион или радикал) и определять тут же метакласс - органика или нет
Андрей Светлов
Занятно. Естественная систематизация уже есть.
Метакласс как органика-неорганика кажется, не совсем удачен (может, ошибаюсь - всегда был слаб в химии).
Если есть открытый код - с удовольствием посмотрю.

К слову, классы можно создавать и на лету.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB