|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
Поиск в этой теме |
19.10.2022, 10:17 | #1 | |
Как можно использовать код Python в Visual Lisp? Или как сделать параллельное программирование в Visual Lisp?
Регистрация: 03.02.2017
Сообщений: 56
|
||
Просмотров: 5521
|
|
||||
Регистрация: 10.08.2013
Сообщений: 11,039
|
думаете городить интеграцию с кодом на питоне с параллельным выполнением вычислений займет сильно меньше времени?) А VBA - это тот же ActiveX, скорости на нем не получите.
----- добавлено через ~5 мин. ----- тот же код на .Net можно ориентировочно считать на пару порядков быстрее лиспа работает, т.е. вместо 12 часов будет 10 мин даже без распараллеливания ----- добавлено через ~8 мин. ----- ничего, что акад (хотя, может, в последних версиях есть подвижки) - работает на одном ядре?) |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Я бы подумал на предмет изменения этого самого куска. Логического изменения.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Зависит от задач и сложности хранения данных. И от качества кода, конечно. У меня было, что NET, написанный криво, работал втрое медленнее некомпилированного лиспа. А бывало, что NET в несколько десятков раз быстрее.
P.S. Этот кусок выполняется 12 часов в некомпилированном виде? А если собрать его в fas?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
----- добавлено через ~2 мин. ----- Да собрал я его в fas т.е. с компилируемый. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Offtop: Я в свое время тоже так думал. Пока не поменял ненужный mapcar на foreach
----- добавлено через ~2 мин. ----- Offtop: Ну и - дополнительно - вопрос в качестве входящих данных. Если они слабоструктурированы, то, может, узкое место совсем не здесь? ))
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
----- добавлено через ~5 мин. ----- Может быть не здесь. Там долго происходит проверка (поиск) куда можно поставить мультивыноски между примитивами. А проверка происходит на пересечения. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Я сильно подозреваю, что параллельность не сильно понадобится. Смотри, допустим, есть задача из списка вытащить что-то там по ключу. Проблема в том, что ключ может быть строковым. И необязательно в едином регистре. Придется городить костыли, хотя достаточно просто данные "снаружи" привести в божеский вид.
Offtop: Пример, конечно, высосан из пальца, но тем не менее: Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
Понятно. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,039
|
.Net работает фактически напрямую с акадом (через обертки над нативным С++), а сама обработка данных вообще акад не затрагивает по сути. Плюс есть куча готовых вещей - списки, словари и т.д. Ну а так смотря какой код напишите) Вот у Алексея были тесты, у меня по сравнению с аналогичными задачами при переходе с Interop (тот же ActiveX) на .Net скорость выполнения кода примерно на пару порядков и подросла.
Причем на .Net можно делать AutoLISP Function Definition и вызывать из лиспа основной программы (это к вопросу тестирования производительности - что не всю программу перелопачивать сразу, а по частям). |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
Понятно. Круто. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Знакомая задача Тут вполне может оказаться наиболее выгодным (если оставлять все на лиспе) создавать новый документ через ObjectDBX, туда клонировать примитивы и напрямую в том документе создавать / проставлять мультивыноски. А потом готовые мультивыноски склонировать в текущий. Тупо, но иногда достаточно выгодно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 03.02.2017
Сообщений: 56
|
Цитата:
То есть можно создать в VB.NET функцию далее сохранить в dll. Далее загрузить dll в autocad через netload и можно пользоваться этой функцией как обычной lisp? Просто я не профессиональный программист. ----- добавлено через ~6 мин. ----- Цитата:
Последний раз редактировалось power85, 19.10.2022 в 11:52. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Да, можно. Просто у меня на такие вещи почему-то достаточно большие потери на разбор входящих данных (если это списки какие-то достаточно странные) и формирование выходных списков. Но из меня NET-программист как из слона балерина
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 06.04.2015
Сообщений: 2,676
|
Цитата:
----- добавлено через ~11 мин. ----- Не понятно, что за входные списки? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Ну, к примеру, лисповая функция обрабатывает список вида '(("key1" . "value1") ("key2" "val21" "val22" "val23) ...), и должна вернуть нечто типа '((1 . 1) (2 . 3) ...) - логика сейчас не важна. На NET (я про замену "в лоб") придется корректно разбирать входящий параметр и опять же - корректно формировать выходной список. У меня на выполнение именно этого куска тратится прилично времени.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 06.04.2015
Сообщений: 2,676
|
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Я не про это. На входе в функцию данные, которые как-то структурированы и которые надо каким-то хитрым образом обработать. И вернуть тоже список, чтобы не порушить остальной код.
К примеру: Код:
Код:
----- добавлено через ~1 мин. ----- Естественно, все имена фунций выдуманы прямо на ходу.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли на языке Python сделать графическую программу по анализу тензора напряжений? | PETR_THE_GREAT | Программирование | 4 | 17.02.2022 16:15 |
Можно ли использовать для шпилек резьбовые штанги вместо арматуры? | Drake | Железобетонные конструкции | 9 | 22.06.2021 03:38 |
Можно ли для отделки пола в Технических помещениях торгового центра использовать линолеум Г1В2Д2Т2РП1 ? | drill_man | Поиск литературы, чертежей, моделей и прочих материалов | 32 | 06.04.2013 15:54 |
Какую версию ObjectARX с каким AutoCAD можно можно использовать? | nav3000 | Программирование | 3 | 01.12.2012 21:37 |
Можно ли использовать формы VBA для запуска lisp команд? | Kserg_nn | LISP | 4 | 05.02.2010 20:00 |