|
|
  |
Python для разработчика, зачем? |
|
|
|
Mar 14 2018, 04:30
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Помимо автоматизации рутинных операций Python очень крут для анализа данных, моделирования и исследований - библиотеки numpy, matplotlib, jupyter и т.д (на венде лучше всего установить пакет Anaconda). Например, jupyter notebook - веб приложение класса computational notebook, позволяющее эффективно вести исследования и расчёты, совмещая с документированием. Вот я ради пробы побаловался. Тут в ячейке 1 цепляемся к процессу, который гонит видеопоток, во 2-й ячейке выдёргиваем кадр (объект f), в 3-й выводим кадр, в 4-й выводим профиль 60-й строки. Далее можно делать что угодно - строить и анализировать гистограммы, наводить статистику, производить обработку изображения. Кадров можно выдрать сколько угодно и работать с их массивом. Вот тут более взрослое использование фич jupyter notebook - прямо законченный документ, с оформлением, данными, вычислениями, ссылками и т.д. Помимо показанного там ещё можно писать формулы в формате LaTeX, получается очень красиво. Здесь обзор некоторых фич. Кроме того, очень удобно писать вспомогательный и/или технологический софт, в том числе когда требуется GUI - например, с использованием биндинга PyQt. Скорость разработки возрастает по сравнению с кодированием на С++, а скорость приложения получается почти такой же. Критичные места можно реализовать на С++. Одной из самых крутых фишек является возможность внедрить в приложение на PyQt ядро jupyter и получить доступ к потрохам приложения в питоновой консоли по типу IPython со всеми плюшками в виде автодополнения, умной истории команд, возможности использовать всю мощь matplotlib и т.д. Доступ по чтению и записи - т.е. можно оперативно выхватывать данные из приложения и изменять внутренние объекты интерактивно. Нам очень это помогает при работе с видеопотоками от камер. В общем, Python - универсальный язык, поддержанный огромным количеством библиотек на все случаи жизни, предоставляющий возможность быстро решать широчайший спектр задач от простой автоматизации рутинных операций до построения эффективного ПО для программно-аппаратного лабораторного комплекса.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Mar 14 2018, 05:58
|
Знающий
   
Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664

|
Цитата о построения эффективного ПО для программно-аппаратного лабораторного комплекса. Нет, как раз ПО будет неэффективным. Но это прямо провозглашено в идеологии питона - он не для производительности ПО, он для производительности труда. Поэтому, правильнее будет не "построения эффективного ПО...", а "эффективного построения ПО". Кстати, рекомендую сразу правильно пользоваться операторами сложения, конкатенации и т.п. Потому что это сейчас питон - язык с динамической типизацией, но постепенно такие языки приходят к строгой типизации, и этот путь уже прошли perl и php. В этом плане тоже идеология питона мне приятна - "должен быть только один способ сделать что-либо правильно".
|
|
|
|
|
Mar 14 2018, 06:13
|
Знающий
   
Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664

|
Цитата Наверное спорно- случаи есть разные Наверняка есть разные случаи, и, действительно, есть всегда есть смысл обговорить точку отсчёта. Но, как правило, код на C - это 10% аппаратных затрат того же алгоритма, но выполненного на perl/python. В perl эту задачу решили, сделав математические и dsp-шные библиотеки на C, и прикрутив к ним perl'овский интрефейс, то есть, для программиста на perl это выглядит как обыкновенный perl'овый модуль. Но там хитрость - передача данных от perl к C и обратно требует накладных расходов, поэтому, даже если делать всё правильно - собирать большие объёмы данных и уже их отправлять на обработку в модуль, то можно достичь производительности 90% от кода на чистом C. На python мне такое делать не приходилось, но уверен на 140%, что там есть что-то похожее, правда, оставляю 6%, что подобного там нет. В то время, когда я подобными вещами пользовался, ещё не было. Но, признаюсь, синтаксис perl мне нравится больше, чем python, считаю python хипстерским языком, что, однако, не мешает мне видеть его сильные стороны (ну или я на это надеюсь).
|
|
|
|
|
Mar 14 2018, 06:19
|
Знающий
   
Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250

|
Цитата(a123-flex @ Mar 14 2018, 08:55)  расскажите об этом любителям ардуино) Хорошее сравнение: как абдуринщики лепят свои поделки, совершенно не вникая суть и по принципу "абы работало" ("а если не хватит этой абдурины, возьмем более мощную или 2-3-5 штук") вместо того, чтобы взять нормальный микроконтроллер и почитать даташит, так и пхытон раскручивают, чтобы люди, вообще не имеющие даже базовых основ программирования, могли надергать куски готового кода и слепить "абы работало". А то, что оно тормозит как не в себя и ресурсов жрет неплохо, их не пугает: ведь можно проапгрейдить процессор, добавить памяти (а то и более мощный компьютер купить, если пхытон слишком тормозит на старом). Краткое название всему этому — ориентирование на потребителя легкого поведения.
Сообщение отредактировал Эдди - Mar 14 2018, 06:20
|
|
|
|
|
Mar 14 2018, 06:19
|
Местный
  
Группа: Участник
Сообщений: 326
Регистрация: 4-11-15
Пользователь №: 89 174

|
Цитата(Dubov @ Mar 13 2018, 14:13)  Прошу рассказать о каких-либо примерах применения Python в Embedded. Это идиотизм применять язык высокого уровня, предназначенный для обработки больших массивов данных в Embedded где все заточено на экономию ресурсов. Нельзя его там применять и точка. Искать примеры еще больший идиотизм.
|
|
|
|
|
Mar 14 2018, 06:28
|
Знающий
   
Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664

|
Цитата Нельзя его там применять и точка. Искать примеры еще больший идиотизм. Очень узко мыслите. Вот прямо очень. Прямо пример, который сразу приходит в голову - это парсер текстовых файлов - написан он будет на скриптовом языке очень быстро, отлажен очень быстро, а работать он будет очень надёжно. Это могут быть файлы конфигурации устройства на том же JSON или XML, приняли tar, распаковали его, обработали oneliner'ом, вычленили изменения настроек, применили. на том же perl это реально может быть oneliner - то есть, код в одну строку. Надёжно, протестировано, эффективно. Нужно раз в полгода, а-то и раз в несколько лет. Накладные расходы на использование скриптового языка получаются крайне низкими. P.S. И это пример, когда скриптовый язык может применяться в конечном устройстве непосредственно. Выше в этой теме есть примеры, когда он используется в ходе разработки, а не в конечном изделии. Я чаще применяю именно так (в ходе разработки).
Сообщение отредактировал one_eight_seven - Mar 14 2018, 06:32
|
|
|
|
|
Mar 14 2018, 06:38
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(one_eight_seven @ Mar 14 2018, 12:58)  Нет, как раз ПО будет неэффективным. А вы пробовали? А мы да. У нас есть приложение, принимающее поток с камеры - по сути software-defined camera: на дивайсе вся обработка выключена, что с сенсора снято, то и отправляется на хост в "сыром" виде, цель - отработка алгоритмов обработки видеопотока. Приложение написано на Qt5. И есть вариант этого же приложения на PyQt5. Оба приложения ожирают в районе 9% производительности проца (плюс-минус процент). При этом на питоновом варианте функциональность даже побогаче, не говоря уже о возможности интерактивно работать с потрохами приложения через консоль, висящую в другом процессе. Да, критичные места переписаны на С++, но там их всего ничего - три-четыре функции. Тормозов нет, потому что внутри всё равно работает оптимизированный код: что GUI'ая часть - библиотеки Qt, что numpy (видеокадры - массивы ndarray) - операции реализованы на С (хотя кое-что пришлось переписать, например, их функция построения гистограммы очень медленная для нас оказалась, она универсальная и навороченная, для интерактива годится, для потока нет, пришлось написать свою, там кода пять строк). В этом и фишка питона: это язык-фронтэнд. Не нужно стремиться писать на нём всё, нужно уметь правильно распределить код - нагруженные вещи реализовывать в оптимизированных модулях, а на самом питоне писать только управление этим. В этом суть pythonic философии. И не случайно питон занимает лидирующее место по количеству библиотек - буквально есть почти подо всё. Цитата(one_eight_seven @ Mar 14 2018, 13:13)  Но, признаюсь, синтаксис perl мне нравится больше, чем python, считаю python хипстерским языком Ну, на вкус и цвет... Но насчёт хипстерского вы явно перегнули. У питона наиболее простой и человечный синтаксис из всего, что видел. Он просто акцентированно простой и неперегруженный синтаксическими элементами. Даже точки с запятой в конце выражений нет. Даже лексем для выделения блоков. Уж проще просто некуда. Даже проще чем в матлабе.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|