Ctypes Python - Огромная скорость и БЕЗОПАСНОСТЬ компонентов

  Рет қаралды 27,853

ZProger [ IT ]

ZProger [ IT ]

Күн бұрын

⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
⭐ Телеграм канал: t.me/+In3AJdKfrMVkZTUx
В данном видео мы рассмотрим способы интеграции Python с языками Си и С++. Мы создадим 3 компонента на языки Си, скомпилируем их в готовые динамические библиотеки и подключим в Python для использования. Сам Python в данном примере служит лишь удобным интерфейсом для взаимодействия с библиотеками.
📁 Github: github.com/Zproger
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Связаться со мной: zproger777@gmail.com
📁 Исходный код всех компонентов: t.me/codeblog8/141
📁 Поддержать криптовалютой: github.com/Zproger/donate
Тайм-коды:
0:00 - Вступление и пару слов о скорости/безопасности
1:14 - Создаем компоненты на языке C
1:50 - Разработка первой библиотеки (открываем ссылку в браузере по-умолчанию)
4:50 - Компиляция библиотеки для совместимости с ctypes
5:06 - Важные моменты о ctypes
6:57 - Подключаем библиотеку в Python проект
7:20 - Тест первой библиотеки из Python
7:30 - Работа с потоками из языка Си (Разработка второй библиотеки)
9:00 - Разрабатываем третий компонент (Ещё один способ создавать потоки)
10:07 - Тестирование pthread потоков в Python
10:20 - Какие преимущества дает такой подход?
10:50 - Больше контента о Python на канале и в описании под видео =)

Пікірлер: 78
@user-be7xc9uy6c
@user-be7xc9uy6c Жыл бұрын
Видео огонь. Спасибо, как раз искал инфо по подключению dll
@AlexRootx
@AlexRootx Жыл бұрын
Однозначно, хороший формат, лайк!!!
@zproger
@zproger Жыл бұрын
Благодарю!
@superagent00x42
@superagent00x42 Жыл бұрын
Спасибо за видео, интересно. Было бы здорово приложить ссылку на видео про безопасность в python)
@user-yk2zc8vy6u
@user-yk2zc8vy6u Жыл бұрын
Контент огонь! Спасибо))) Я сделал решатель судоку, но хочу сделать ещё что-то, чтобы генерировала бы мне сами судоки, которые уже решать, но там миллиарды переборов, если мне нужны сложные поля... может быть переписав на С, я бы решил свою проблему
@robertobokarev439
@robertobokarev439 Жыл бұрын
Ждём многопоточность в самом пайтоне через multiprocessing :)
@smoqeeqoms728
@smoqeeqoms728 Жыл бұрын
привет, спасибо за контент. Хотел бы предложить снять видос по поводу работы с памятью, что такое сигнатуры, офссеты, как это всё работает технически, т.к. информации по этому реально мало в интернете!
@sergeymarkevich6406
@sergeymarkevich6406 Жыл бұрын
Объяснения бы по лучше, но материал интерестный спасибо!
@northern_man_
@northern_man_ 11 ай бұрын
как с помощью ctypes получить указатель на любой объект, например на метод класса? и заменить его другим методом динамически?
@dmitry-lz1ny
@dmitry-lz1ny Жыл бұрын
А можно ли Go так же использовать? *То есть писать быстрые модули на Go и добавлять в питон проект
@nakamasama
@nakamasama Жыл бұрын
Годное видео, пускай и с ошибкой (возможной)... Ты сказал, что через ctypes можно подключать любую библиотеку (я в виду имел библиотеку, написанную на любом языке), но это не так! Python написан на С и поддерживает только С библиотеки. С++ он не поддерживает! Я даже после просмотра ролика пошёл проверил. У меня есть свой проект на С++, своя библиотека с алгоритмами и я не могу использовать их через ctypes. Он просто ничего не видит. Да и сам автор сказал, что можно подключать библиотеки написанные на С и С++, а показал только С. Почему?🤨 Как подключить именно С++ библиотеку через ctypes? Но если не обращать на это внимание, то про всё остальное автор хорошо объяснил. По крайней мере я всё понял.
@user-pg8ry1tm3t
@user-pg8ry1tm3t 5 ай бұрын
Boost.Python
@shakapaker
@shakapaker Жыл бұрын
Спасибо за контент 🔥Как называется плагин для VSCode который подсвечивает аргументы которые мы передаем в функцию?
@zproger
@zproger Жыл бұрын
Привет, у меня только Dracula установлен
@shakapaker
@shakapaker Жыл бұрын
@@zproger ​Нашел! Это встроенная функция в VSCode - Inlay Hints > Parameter names, она относительно недавно появилась
@user-bn6iu8uk1k
@user-bn6iu8uk1k Жыл бұрын
@@zprogerесли вдруг прочтешь, можешь сказать какую ос используешь?
@bspumo3830
@bspumo3830 Жыл бұрын
Кстати хотел ещё спросить, ты учился где-нибудь на программиста?
@user-pg8ry1tm3t
@user-pg8ry1tm3t 5 ай бұрын
Прекрасное видео! Posix функции… ниже уровнем - только асм…🥴
@user-xl7hd4io9t
@user-xl7hd4io9t Жыл бұрын
Какой дистрибутив линукс использует автор? Мне интерфейс очень нравится)
@gerhvabra379
@gerhvabra379 Жыл бұрын
zorin os
@bspumo3830
@bspumo3830 Жыл бұрын
Привет, хотел спросить. А сколько языков п. ты знаешь?
@zproger
@zproger Жыл бұрын
Хорошо знаю только Python, но ещё могу на Rust писать, и если надо то средние задачи и на других языках могу сделать вроде Java, C++ и т.д. Но тут главное скорее не количество языков, а просто понимание технологий, а так между языками много похожих моментов =)
@ayattelzhanov9888
@ayattelzhanov9888 Жыл бұрын
Это крутое видео
@ithelper-it591
@ithelper-it591 Жыл бұрын
Хорошо, понятно. Но можно ли превратить .py в .dll т.е. написать .dll(Windows) или .so(Linux) на Python а не на C/C++??? Без использования Cython(через .pyx файл). То есть на прямую.
@zproger
@zproger Жыл бұрын
Python не компилируемый язык, даже если и можно создать подобные файлы, то только с помощью инструментов, ибо придется паковать интерпретатор в том числе, и такие dll будут весить как и полноценный исполняемый файл.
@ithelper-it591
@ithelper-it591 Жыл бұрын
@@zproger Это возможно? Если да, то как?
@user-ie2rg1in7x
@user-ie2rg1in7x Жыл бұрын
Красава
@chazgrant49
@chazgrant49 Жыл бұрын
Подскажите пожалуйста, что за ОС установлена?
@zproger
@zproger Жыл бұрын
Zorin OS
@sevaharchenko702
@sevaharchenko702 Жыл бұрын
5:19 а с с# тоже работает?
@bendron7427
@bendron7427 Жыл бұрын
Спасибо за видео. Возможно ли аналогично взаимодействовать с модулями написанными на Rust? Интересно бы посмотреть на подобную связку.
@AntiBandera
@AntiBandera Жыл бұрын
Конечно возможно. И не только на Русте но и на Хрусте ...и даже на ASM.
@ownedbyptr
@ownedbyptr Жыл бұрын
ну использовать cffi в расте и пожалуйста
@seoonlyRU
@seoonlyRU Жыл бұрын
ЛАЙК ОТ СЕООНЛИ!
@zproger
@zproger Жыл бұрын
=)
@AlexandrSpirit
@AlexandrSpirit Жыл бұрын
Видел где-то как компоненты на Rust и Go пишутся для пайтона.
@nurimrider964
@nurimrider964 6 ай бұрын
что это все значит? можете пожалуйста обьеснить о чем этот код? на какой цель может быть использована?
@Asura_hart
@Asura_hart 18 күн бұрын
Ускорение гоана в виже пафтона
@user-em7zt1kr3u
@user-em7zt1kr3u Жыл бұрын
Спасибо! Но увы я так и не уловил сути. ( Я делаю все так же но почему то не работает (. Что то видимо упускаю, и тут это не показано (. Но все равно огромное спасибо тебе за этот ролик!!!
@user-sx1sv3km3m
@user-sx1sv3km3m Жыл бұрын
А без malloc можно? Динамически выделять память вроде не очень хорошо.
@zproger
@zproger Жыл бұрын
Выделять память это обычная практика, главное освобождать её
@p4m3remostone71
@p4m3remostone71 Жыл бұрын
Динамически выделять память не очень хорошо? Ну смотри, если ты в питоне используешь то что принимает на ввод строку, то без динамического выделения памяти не обойтись. Изначально интерпретатор не знает, какой длины будет твоя строка. Поэтому там память выделяется динамически. Главное не выделять память динамически в цикле, иначе будет теряться указатель и ты не сможешь освободить эту память.
@rw_panic0_0
@rw_panic0_0 Жыл бұрын
@@p4m3remostone71 динамическое выделение памяти как инструмент ни хорошо ни плохо, а под ввод строки технически можно в стэке аллоцировать буффер с фиксированным размером, главное чтобы был достаточно большим чтобы вместился ввод, а память в стэке аллоцируется статически, а значит быстрее. Все зависит от того, насколько сильно приходится оптимизировать программму
@user-pg8ry1tm3t
@user-pg8ry1tm3t 5 ай бұрын
Ну не очень хорошо, если постоянно малочить, тогда частые набеги в ядро ос будут проц тормозить. А вот если один раз в пул, а потом из него, то получим вполне неплохо. Собственно так питон и делает, потому и не сильно тормозной, всего раз в 40 относительно нативных плюсов…
@sledleo
@sledleo Жыл бұрын
Всё очень интересно, но непонятно. Непонятно потому что умозрительно удержать что есть что - трудно. Нужна наглядная картинка.
@irgendwer234
@irgendwer234 Жыл бұрын
Хоть я и против проприетарного ПО с закрытым исходным кодом, видео очень понравилось. На самом деле, модули на языке С могут значительно повысить производительность
@rexby
@rexby Жыл бұрын
А какая связь между С и проприетарным ПО?
@fedor_ado
@fedor_ado Жыл бұрын
А Баба Яга против..
@AntiBandera
@AntiBandera Жыл бұрын
а если писать на ASM будет еще быстрее !
@Ramzes200986
@Ramzes200986 Жыл бұрын
стоит
@nikd1ssv
@nikd1ssv Жыл бұрын
Обычно я так не выражаюсь, но, я первый
@zproger
@zproger Жыл бұрын
😎
@riventarakoss1546
@riventarakoss1546 Жыл бұрын
Давай тогда и про cython раз начал уже
@zproger
@zproger Жыл бұрын
Будет =)
@user-ot1eq6qf7n
@user-ot1eq6qf7n Жыл бұрын
Не знаю, мне какой-то очень быстрый формат видео. Как-то даже когда прематываю назад, то не успеваю понять что там происходит. Весь код новый, дебаггером не проверяется, ошибки не исправляются, я даже не успеваю проникнуться идеей, как все уже заканчивается.
@user-pg8ry1tm3t
@user-pg8ry1tm3t 5 ай бұрын
Да здравствует com незабвенный! И с ним dll повседневный…
@SerhiiVielkin
@SerhiiVielkin Жыл бұрын
Ребят, возможно я чего то не знаю, но обьясните дураку. Я понимаю что языки семейства си работают быстрее чем питон, но понту тогда пытатся писать что то на питоне подключать модули и так далее как на видео, если изначально можно писать код на си? Или результат полученный на видео работает быстрее чем просто си? Единственное что мне пришло в голову, это то что в си нет ООП и когда ты работаешь с классами то такая связка может сработать.
@euuhgzz2791
@euuhgzz2791 Жыл бұрын
Питон удобен для проектирования алгоритмов и работы с апи приложения, и автоматизация
@astroblartvk8560
@astroblartvk8560 Жыл бұрын
Слушай, а C++ можно? Типо длл на с++
@astroblartvk8560
@astroblartvk8560 Жыл бұрын
@Qren | Just about Java хорошо, узнаю. Спасибо!
@user-el6rd9hg7u
@user-el6rd9hg7u 2 ай бұрын
Зачем python, если вы на С++ пишите?
@m0Ray79
@m0Ray79 Жыл бұрын
Гораздо проще писать код на Cython.
@zproger
@zproger Жыл бұрын
Насколько я знаю он работает не со всеми технологиями, а на с/c++ можно написать что угодно
@m0Ray79
@m0Ray79 Жыл бұрын
@@zproger Он прекрасно стыкуется и с C/C++. Cython сначала транслируется в C или C++ по выбору, и перед компиляцией в бинарный код можно подтянуть свои же наработки на C/C++. При этом Cython гораздо органичнее встраивается в CPython API.
@takiekakmi7532
@takiekakmi7532 Жыл бұрын
Python медленный... Если приложение работает медленно - дело явно не в языке....
@zproger
@zproger Жыл бұрын
=)
@georgiyveter6391
@georgiyveter6391 Жыл бұрын
Интересно, но ничего не понятно, для тех, кто не изучал C🧐
@riuji6681
@riuji6681 Жыл бұрын
Смысл делать что-то на Python, если знаешь гараздо функциональнее язык С
@rw_panic0_0
@rw_panic0_0 Жыл бұрын
пайтон безопаснее чем С + на нем быстрее кодить
@serobrine
@serobrine Жыл бұрын
C достаточно примитивный. Много надо писать с нуля, а это медленно
@user-pg8ry1tm3t
@user-pg8ry1tm3t 5 ай бұрын
@@rw_panic0_0отнюдь не безопасней
@user-cn6kw6uk6z
@user-cn6kw6uk6z Жыл бұрын
Я первый?
@zproger
@zproger Жыл бұрын
Не, я первый =)
@bspumo3830
@bspumo3830 Жыл бұрын
Извини, но по сравнению с pt ты объясняешь будто на инопланетном языке 😅
@zproger
@zproger Жыл бұрын
Бывает =)
@Lucerbius
@Lucerbius 2 ай бұрын
Автор какой-то Мегамозг. Я половину текста вообще не понял, настолько всё замудрёно.
@zproger
@zproger 2 ай бұрын
:D
Как избавиться от циклов импорта в Python
13:09
Final muy increíble 😱
00:46
Juan De Dios Pantoja 2
Рет қаралды 51 МЛН
ТОП 5 Ошибок в написании функций Python
12:46
Python Быстрее чем Си?! Ускоряем Python До Максимума!
15:22
Псевдо Программист
Рет қаралды 19 М.
Using Arrays with Python Ctypes
16:19
CodersLegacy
Рет қаралды 4,3 М.
Python + PyQt5 + PostgreSQL (часть 1)
25:25
Перлины: Владислав и Елена
Рет қаралды 14 М.
Python Typing - Type Hints & Annotations
24:46
Tech With Tim
Рет қаралды 108 М.
Создание сборщика мусора | С
16:02
Winderton
Рет қаралды 134 М.
ЭТИ КНИГИ СДЕЛАЮТ ИЗ ТЕБЯ ХАКЕРА
16:38