Двач.hk не отвечает.
Вы видите копию треда, сохраненную 4 августа 2022 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Питон тред №139 /python/ 2338156 В конец треда | Веб
Тред, посвящённый языку программирования Питон, #139

Предыдущий: >>2320027 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem

Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться

#######################################

ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года

Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.

— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х

— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html

— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0

— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4

— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.

— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)

— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется

— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.

— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
2 2338459
>>2337202 →
Свинособака, я тебе и по-человечьи и по-свинячьи и по-собачьи пытался объяснять - ты же слишком туп чтобы понять хоть что-то

Тебе максимально наглядно была продемонстрирована работа неблокирующего асинхронного кода, loop.run_until_complete добавлен исключительно чтобы скрипт ждал и не завершался раньше времени. То что ты не понимаешь концепцию асинхронки и ивент лупа а заодно и очевидно никогда не работал с питоновским asyncio ни на одном проекте - исключительно твои проблемы. Так и сиди дальше на джанге и не лезь к нормальным людям
3 2338515
>>38459

>Тебе максимально наглядно была продемонстрирована работа неблокирующего асинхронного кода, loop.run_until_complete добавлен исключительно чтобы скрипт ждал и не завершался раньше времени.


Ну хотя ты в целом прав в этом сраче, твой код всё равно адовый.

Это какая-то каша под питон-3.6, который официально похоронен 23 декабря 2021. А сейчас 2022 на дворе, питон 3.10 давно в релизе, а меньше чем 3.8 вообще как-то даже неприлично использовать.

Использовать loop напрямую для таких целей считается зашкваром. С loop напрямую иногда надо работать, но не так.

Твой код мог бы выглядеть так
async def main():
____a = asyncio.create_task(say('Alice'))
____b = asyncio.create_task(say('Bob'))
____await asyncio.wait([a, b])

asyncio.run(main())
4 2338534
А вообще так. Есть принцип Concurrency работы. Это когда надо одновременно исполнять несколько ветвей исполнения.

В каждой ветви исполнения код выполняется строчка за строчкой и только так.

В случае системных потоков, threading, система-интерпретатор переключают ветви исполнения в произвольный момент времени. Но при этом каждая внутри себя исполняется последовательно.

В случае asyncio, переключение ветвей исполнения идёт только на операторе await, пока нет await, переключение невозможно.
А оператор await означает лишь то, что необходимо в этой строчке дождаться результата асинхронной операции, при этом можно переключиться на другую задачу.
5 2338538
>>38534
продолжаю,

задача, Task - самый главный примитив asyncio. Аналог треда в многопотоке. Все задачи независимые, каждая живёт своей жизнью, задача планировщика переключать задачи между собой. Это происходит на операторе await, как я уже говорил.

Вызов
a = asyncio.create_task(say('Alice'))
это синхронная операция. Смысл её в том, чтобы поместить в планировщик новую задачу, после чего она начинает жить своей жизнью, как и все другие задачи. Чтобы с ней коммуницировать, надо явно использовать какие-то функции. Сам объект-задача возвращается из функции.

Сделав несколько последовательный вызовов, мы получаем несколько задач. Они смогут исполняться, как только планировщик встретит первый await, и не раньше этого.

А когда мы делаем
await asyncio.wait([a,b])
мы уже ждём, пока все задачи не завершатся. Это поведение по-умолчанию, настраивается, в доках всё есть.
6 2338547
Господа асинхронисты. Раз разговор зашел, подскажите, как мнне, примеру, запустить 1000 GET запросов асинхронно, дождаться их выполнения и получить результат в виде списков?

мимо-ньюфаг
7 2338563
>>38547
data = await asyncio.gather(*[my_async_get(url) for url in urls])
8 2338565
>>38547
Если полностью самому пилить, несколько архитектур, идея общая.

1) реализуешь функцию-воркер. Точнее это сервис в виде, как описано ниже. Смысл в том, что этот воркер слушает очередь, получает из неё ссылку, которую надо скачать, возможно ещё какие-то данные, скажем номер ссылки.

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

после этого дальше случает очередь.

2) создаёшь две очереди, для ссылок и для результата. Запускаешь десяток задач-воркеров. Пихаешь в очередь всю тысячу ссылок, а результаты сохраняешь куда надо.

Так ты получаешь асинхронность, и при этом регулируешь нагрузку.

При этом очередь можно кормить постоянно, добавлять новые ссылки на скачивание в рантайме.

Можно иначе эту же идею реализовывать. Через семафоры, например.
9 2338569
>>38563
Без модификации для 1000 запросов плохая идея. Но можно добавить семафор, расшаренный между тасками, и выставить лимит условно в 10 для семафора.

Если список на момент запуска известен и он умеренно большой, скажем 10 тысяч ссылок-задач, но так проще всего.

Если мега-список, или он динамически дополняется, то как я описал надо >>38565
10 2338629
>>38538
Чел, а как оно выбирает, кого следующим запустить?
11 2338631
>>38538
Правильно ли я понимаю, что если таски внутри себя не написаны асинхронно, то никакой выгоды мы не получим?
12 2338670
>>38629
Это работа планировщика. Там разные типы задач, задачи, которые срабатывают по таймеру, задачи, когда ждали данных по сокетам, при системном вызове epoll, обычные задачи.

Если у тебя обычные задачи, то тупо по очереди. Задача отработала до следующего await, после него планировщик помещает её в конец очереди из других задач.

Надо исходники смотреть, я смотрел, но уже не помню.
13 2338673
>>38631
Да, правильно. Пока не сделаешь await футуры-задачи, будешь висеть на текущей задаче.

Причём если ты сделаешь
time.sleep(10)
вместо
await asyncio.sleep(10)
то всё будет висеть тупо 10 секунд, ничего в это время происходить не будет, никакие другие задачи обслуживаться не будут.
14 2338681
>>38631

>то никакой выгоды мы не получим?


И тут ещё. Конкурентность часто не про выгоду.

Все эти треды придумали ещё в прошлом веке, для обычных компьютеров, которые были одноядерные. Более-менее массовые двуядерные процессоры стали появляться где-то с середины нулевых.

Тебе очень часто надо обрабатывать несколько задач одновременно. Например у тебя графический интерфейс программы, которая сетевое соединение устанавливает. Без конкурентности ты не сделаешь такую программу мало-мальски адекватно. ГУИ не должен блокировать сеть и наоборот.

Или когда надо несколько сетевых соединений обрабатывать. Тоже самое. Ты просто не сможешь это реализовать в обычной однопоточной логике.

Но правда то, что в asyncio тебе надо явно разрешать переключить задачу, и если ты этого не сделаешь, всё повиснет. Или если будет синхронную функцию использовать. А с тредами всё будет работать.

Кстати работа файловой системы нативно асинком не поддерживается. Тебе надо в тредах обращение к файлам запускать, чтобы выгода была, чтобы не подвисало исполнение на ожидании данных.
15 2338717
Сап, пишу бота для телеги, возникает вопрос на такого рода конструкции в примере кода: "@bot.message_handler(commands=['start', 'help'])". 'bot' - это объект класса. Эта хуякак стоит перед функцией. Как это вообще называется и что делает, нахуя там @?
16 2338747
>>38459

> Тебе максимально наглядно была продемонстрирована работа неблокирующего асинхронного кода


Не взрыв, а хлопок. Не наводнение, а подтопление. Не война, а спецоперация по демилитаризации и денацификации. Не говнокод, а максимально наглядная демонстрация. Так и запишем

> loop.run_until_complete добавлен исключительно чтобы скрипт ждал и не завершался раньше времени


Пчел, это допотопное говно уже лет 5 не используют. Ты бы еще декоратор нахуячил

> ты не понимаешь концепцию асинхронки и ивент лупа


И это говорит человек, который утверждал о том, что футуры может создавать только сервер. Агакакскажешь

> очевидно никогда не работал с питоновским asyncio ни на одном проекте


Ты используешь интерфейс asynio про который даже в документации написано
Important See also the create_task() function which is the preferred way for creating new Tasks
Deprecated since version 3.10

Ты кому пиздишь? Себе, мне или господу богу?

> Так и сиди дальше на джанге и не лезь к нормальным людям


Ну ты хоть разок открой документацию-то, долбаеб
>>38515
Зачем ты пытаешься что-то объяснить челу, который использует деприкейтед хуйню? Он же изучал погромирование по слитым курсам скиллбокса в телеге
>>38629
С помощью epoll, по факту просто проверяет события для файла
>>38534
Все так, только стоит еще рассказать про переключение контекста и генераторы
>>38717
Попробуй сначала изучить базовый синтаксис, вот серьезно. Какого хуя вы все так рветесь написать своего первого бота? Все равно придется возвращаться и изучать циклы с условиями
17 2338755
>>38673
>>38681
Но в чём же тогда выгода асинхронности по сравнению с тредами? Если в асинхронности нужно каждый пук делать асинхронно, чтобы всё не подвисло, а тредами проц сам управляет - получается, что треды дают более высокий уровень абстракции и проще для написания кода? Или тут кроются подводные камни?
19 2338790
>>38755
Потому что треды переключаются постоянно и зачастую в молоко, а в случае асинкио ты сам контролируешь переключение и не рыпаешься просто так
20 2338817
>>38755
Наибольшую отдачу асинкио даёт на сетевых задачах, потому что там в поднагодной используется специальный системный вызов, который делает коллбэк, как на сокет, где ты данные ожидаешь, что-то приходит. Это эффективнее, причём на других платформах тоже подобный подход используется. Скажем nginx так работает, и не только.

Для меня, как программиста, асинк удобнее тем, что полностью прогнозируемо, когда задача может переключиться. И практически нет проблем с критическими секциями, необходимостью ставить кучу блокировок и т.п. Для тредов умеренная проблема, если проектировать правильно, но всё-таки там это некий геморрой иногда может быть. В этом плане треды заметно сложнее.

В общем и свои плюсы, и свои минусы в каждом подходе есть.
21 2338840
Есть вроде бы питоновская программа gallery-dl https://github.com/mikf/gallery-dl
Как её запустить из среды питона, а не через bash?
Сделал как в инструкции pip install -U gallery-dl
Всё установилось. Но ни import сделать, ни работать через gallery-dl URL не получается.
Весь пердолинг чтобы не засирать основной ликусовый питон, а оставить в виртуальной среде.
22 2338843
>>38840
А как обчно спросил и решил сам через 5 минут. Через сабпроцес
subprocess.run(["gallery-dl", "ЮРЛ"])
я чёт думал он в другое место полезет к основному питону.
23 2339009
>>38755

>Но в чём же тогда выгода асинхронности по сравнению с тредами?


Треды переключаются через равные интеравалы времени внезависимости от того, готова задача или нет. Если у тебя висит 10 тредов, а данные получены только в одном, то планировщик все равно пройдется по всем тредам и будет бессмысленно ждать получения данных.
24 2339028
>>39009
Кажется, что для организации ui, например, или буферизации такое поведение предпочтительно, нет?
25 2339038
>>39028
Да, поэтому не надо совать асинхронность где не нужно. Это замена тредам только в определенных местах.
26 2339043
>>39038

>только в определенных местах


Ну-ка, в каких это местах треды предпочтительнее асинхронки? Питоновские треды это профанация из-за GIL, кроме как в работе с сетью они ничем не помогут, как и асинхронка. Но вот у асинхронки неоспоримые преимущества в виду отсутствия гонок/взаимоблокировок а также явные переключения контекста в ходе исполнения (пока не встретится await, синхронный код не прервется и левый таск исполняться не будет)
27 2339054
>>38156 (OP)
Блять, зумерки, хули с вами не так? Буквально на днях на проект пришел типичный 22летний мидол, уже поработал где-то и ЧСВ себе до небес взрастил. С первого же дня начал визжать на созвонах "у вас все ниправильна!! у нас по-другому было!! у вас либы устаревшие!" на предложение взять это самому в работу следовало "ой пук, ну я это... не сам же делать собирался да? я вот еще с кодовой базой не до конца познакомился, мое дело предложить..."

А вчера пилили новую репу и для нее решили вынести сервис аутентификации в отдельное приложение, чел из команды сделал это на джанго, т.к. быстро, зумерок тут же побежал в общем чате вопрошать
- А пачиму на джанго? Так никрута!
- Нам главное сделать быстро и чтобы это решение впоследствие работало как часы
- Но ведь у нас асинхронный сервис! А джанго синхронный!
- И что?
- Ну как вы не понимаете! Джанга больше 30 rps на одном воркере держать не может!
- Чел, у нас к этому сервису будет дай боже 2 обращения за токеном в день, ты о чем?
- Ну джанго это прошлый век! Так нельзя делать!

Бля... с удовольствием переебал бы этому визгливому глисту в поддых, но жаль он на ремоуте
28 2339065
>>39043

>Питоновские треды это профанация из-за GIL


По-твоему треды нужны только для увеличения производительности? Треды не для этого придумывали.

Попробуй с ГУИ без тредов работать, например.
29 2339067
>>39065

>Попробуй с ГУИ без тредов работать


Чел... асинхронка - стандарт для ГУИв, ты о чем?.. C# и electron.js так и работают

а десктопные ГУИ на питоне это отдельный вид извращения
30 2339074
>>39067

>стандарт для ГУИв, ты о чем?.. C# и electron.js так и работают


> Питон тред №139


> /python/


Чел, какой стандарт? Только дохлый Киви как-то как опцию возможность предлагает. Все остальные ГУИ питона жёстко завязаны на треды.

В c# скорее тоже треды. А электрон как и питон однопоточный, там нет тредов в том виде, как хотя бы в питоне они есть. Не говоря уже про C#, C++ и Java, где треды настоящие
31 2339076
>>39067
А в шарпе и электроне асинхронка так же устроена, как в питоне?
32 2339079
>>39043

>electron.js


Это там где у тебя отдельный процесс на рендер программы, который обменивается данными с процессом где написала логика?
33 2339176
Нужно распознавать язык у печатного текста. Какие либы или какие апи для этого есть? Желательно полноценную проверенную либу, чтобы можно было кастомизировать под себя.
IMG20220131104525423.jpg24 Кб, 377x266
34 2339199
>>39176
Keras
35 2339374
Гм. А что если запускать гуи в треде, но внутри треда все элементы в обрабатывать асинхронно? Ведь, если на кнопочку или текстовую форму вешать функционал только вида "отправь данные в основной процесс" - не получится всё заблокировать длинным участком последовательного кода?
36 2339453
>>38156 (OP)

>второй пик


Там в продолжении комикса того питона душат, а потом он ей в очко лезет.
37 2339455
>>39453
Как можно задушить змею?
38 2339519
>>39374
Там есть опции, чтобы пускать гуи в одном треде, а асинкио в другом, и потом устраивать хитрый обмен данными между ними.

Но в любом случае это гемор дополнительный.
39 2339553
>>39043

> Ну-ка, в каких это местах треды предпочтительнее асинхронки?


Например, если взаимодействие с сетью недолгое, на уровне 50мс. Тогда треды работают быстрее асинхронки и держат нагрузку выше.

> Питоновские треды это профанация из-за GIL


Пиздец, ты бы хоть почитал реализацию CPython. Нахуя ты пукаешь о том, чего не знаешь?

> Но вот у асинхронки неоспоримые преимущества в виду отсутствия гонок/взаимоблокировок


Зато появляется охуительный недостаток в виде блокирующего синхронного кода. И нет, вычисления на ядре ты асинхронными сделать не можешь

> а также явные переключения контекста в ходе исполнения


Это плюс, да
40 2339615
Так в чём плюс явного переключения контекста, я понять не могу? Пока вижу, что можно выстрелить себе в ногу блоком синхронного кода, который всё приложенте будет ждать. В доках прямо рекомендуется ставить await asyncio.sleep(0), чтобы дать переключиться на остальные задачи, лол. Может, вы и del явно делаете, а сборщик мусора недостаточно хорош? Бывает нужно, конечно, но в подавляющем большинстве случаев нахуй не надо.
41 2339620
>>39615

> Может, вы и del явно делаете, а сборщик мусора недостаточно хорош?


Ты же знаешь, что del не вызывает сборщик мусора?
Ну и значение из словаря по ключу ты иначе не удалишь, если что

> Так в чём плюс явного переключения контекста, я понять не могу?


Для каждой задачи свое решение нужно. Нет универсального идеального решения
42 2339623
>>39615

>Так в чём плюс явного переключения контекста, я понять не могу?


Тем, что это страхует от race condition, это даёт то, что операции атомарные становятся.

>В доках прямо рекомендуется ставить await asyncio.sleep(0)


Не помню такого в доках, хотя подход известный. Это костыль, который нужен, когда ты делаешь большую вычислительную работу, и надо иногда давать возможность другим задачам что-то посчитать.

Обычно же вычислительная работа небольшая, но зато хватает асинхронных вызовов, и поэтому такой проблемы нет.

Если же у тебя вычисления, то вероятно стоит думать о том, чтобы выпихнуть их или в отдельный тред, или вообще в отдельный процесс.
43 2339676
>>39623

>Не помню такого в доках


https://docs.python.org/3/library/asyncio-task.html#asyncio.sleep

>Setting the delay to 0 provides an optimized path to allow other tasks to run. This can be used by long-running functions to avoid blocking the event loop for the full duration of the function call.


Прямо не рекомендуется, но я считаю, что если так делать не стоит - этого либо не должно быть в доках, либо должно быть с явной пометкой "не надо так", а если есть в доках без осуждения, то это типа считается норм практикой.
44 2339706
Есть условный датакласс Entity, у него есть классовый метод, который итерируется по его полям fields(cls).
Как определять тип дженерика, если тип является коллекцией?
Для простоты возьмём list, нужно мне проверять list, который класс, и List, который аннотация, отдельно?
Как определить, что дженерик в листе является потомком определённого класса?
45 2339830
>>39676
Это нормальный паттерн, но он нужен в редких случаях, явно тут сказано про "long-running functions".

Ты должен применять с умом, чтобы, например, не было слишком частых вызовов. Операция переключения задач довольно дорогая, если на каждой итерации цикла из 10 миллионов итераций ты будешь такой вызов делать, ты просто уложишь всю производительность в ноль.
46 2339874
>>39706
Не очень понятно, что тебе надо. В первую очередь когда и зачем ты хочешь проверять типы.

Проверка в рантайме это одна история. Проверка статическая, через mypy, это другая история.

В целом ты можешь описывать "протоколы", набор методов, которые тебе нужны, чтобы соответствовать требованиям. При этом при описании типа не нужно явно описывать, что тип реализует протокол, питон сам это поймёт. Коллекции всякие это тоже варианты протоколов.

Питон сам знает, что list реализует List, поэтому в джереник с типом List ты можешь спокойно подставлять list.
47 2339922
>>39874

>В первую очередь когда и зачем ты хочешь проверять типы.


Мне нужен датакласс, который может инициироваться со словаря. В том числе со словаря со вложенными структурами. Но пока ограничусь словарями, которые получаются из джейсонов.
Для этого нужно пробежаться по полям датакласса и определить, какие из них являются опциональными и какие - потомками класса Entity. Есть inspect.isclass(), но ещё нужно определить, что класс является потомком Entity и соответственно иницировать его классовый метод на поле словаря.
Но самая ёбля это определять список из потомков Entity.
48 2339937
>>39922
Всё равно не очень понятно. Ты со штатными датаклассами работаешь?

Возможно тебе нужен pydantic или attrs+cattr

Они как раз для того, чтобы в рантайме верифицировать типы.
49 2340013
Сап, как можно пофиксить что 5.2 - 2.8 = 2.4000000000000004?
50 2340014
>>39830
Как я понимаю, цикл из 10ккк итераций вообще не должен быть внутри асинхронного участка кода, разве нет?
51 2340023
>>40013
Decimal
52 2340042
>>40014
Смотря что ты делаешь и зачем.

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

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

А так да, если у тебя сервис, в котором есть тяжёлые вычислительные задачи, то скорее всего надо их выносить в отдельный процесс и уже коммуницировать с ним, высылая асинхронно задания в него и ожидая результат, тоже асинхронно.
53 2340273
>>40042
Спасибо, чел, что уже несколько дней поясняешь, как надо.
54 2340494
Сап.
Запутался тут в одном моменте в джанго. К примеру, пользователи могут оставлять комментарии к статье и ответы к этим комментариям. И ставить лайки или дизлайки и к комментам, и к ответам на комменты. Соответственно у меня будет 3 модели: ответ, коммент и лайк. Но как сделать, чтобы у лайка была ссылка на пост, к которому он сделан? Ну то есть это может быть либо одна модель, либо другая, но не обе одновременно. Или в модели лайка сделать 2 поля ну и просто одно из них будет всегда пустым?
55 2340498
>>40494
Или нужно делать для комментов и ответов отдельные модели для лайков?
56 2340500
Как ткинтером то пользоваться?

У меня был говнокод с фром ткинтер со звёздочкой, и так нельзя (по крайней мере я так понял, что лучше не делать, чтоб не иметь конфликтов с вызовами функций).
Собственно, как шлёпать сами формочки я сносно разбрался. Ппробовал PAGE, но мне сейчас он не нужен для учебных целей так сказать.

Если поставить Label.t (сейчас я убрал везде), то работать не будет. Я что-то не так делаю, или фундаментально не понимаю. В других местах похожее всё работает.
Если в коде снизу поменять на фром ткинтер звёздочка - то будет работать.

https://pastebin.com/LGZPyztG
57 2340504
>>40494
Одна модель должна иметь связь с другой через внешний ключ (foreign key)
58 2340518
>>40504
Какая с какой? Модель лайка состоит из автора, реакции (лайк или дизлайк) и внешнего ключа поста. Но моделей постов две.
Ну я так понимаю надо для каждой модели поста делать свою модель лайков, типа как ещё. Не могут же у меня в одном поле бд храниться ссылки на разные таблицы.
59 2340523
>>40518
Единственный вариант это сделать так, чтобы было две модели лайков.

Одна модель лайков к статьям, вторая модель лайков к комментариям.
60 2340524
>>40500
Вот смотри что у тебя в коде

> import tkinter import t


> import math as m


Что ты пытаешься в первом импорте сделать? Второй импорт корректный, хотя вот лучше так не сокращать, очень дурной стиль, лучше просто делать import math

Для tkinter принято, насколько я помню, импортировать как
import tkinter as tk
Это общепринятое сокращение
Далее ты вызываешь как
tk.Label, tk.Button и т.п.
61 2340525
>>40524

> Что ты пытаешься в первом импорте сделать? Второй импорт корректный, хотя вот лучше так не сокращать, очень дурной стиль, лучше просто делать import math


Хорошо, это понял.

> Для tkinter принято, насколько я помню, импортировать как


> import tkinter as tk


А, понятно. А где почитать про эти "принято"? Мне пип8 советовали.
62 2340545
>>40525
Это просто сокращение, принятое среди использующих его программистов. Прочитать это можно в чужом коде.
63 2340575
>>40545
Где б его посмотреть. В интернете только совсем говнокод с import *
64 2340584
>>40494
Так а нахуя тебе 3 модели? Хватит 2-х
Одна - комментарий, вторая - лайки

Ответ - это тот же самый комментарий, в котором есть ссылка на "родительский ответ" a.k.a. комментарий.
Тогда и мозгоебли, которая у тебя возникла, не будет
65 2340586
Джанго

Есть вот такой орм запрос posts.objects.all().order_by('-date')[:5]
то есть 5 последних постов самых новых по дате.
Но они выводятся в обратном порядке (31.01, 30.01), а мне нужно последовательно по дате (30.01, 31.01)

order_by('-date)[:-5] вот так не работает, отрицательное индексирование не поддерживается

Как в нужном порядке получить?
66 2340589
>>40584
Ну не, это я для примера написал, на самом деле у меня отзывы про товар и комментарии к отзыву. То есть отзыв и комментарий не идентичны. Отзыв содержит ещё оценку.
67 2340633
>>39937

>Всё равно не очень понятно.


Что непонятного? Что хочу инстансы датаклассов создавать из джейсонов?

>Они как раз для того, чтобы в рантайме верифицировать типы.


Мне не нужно ничего верифицировать, по полям я пробегаюсь, чтобы определить, какие поля являются инстансами/списками инстансов предков Entity, чтобы вызвать их классовый метод инициализации с сответствующим ключём словаря.
68 2340639
>>40633
Есть ощущение, что ты пытаешься изобрести свой собственный pydantic.

Эта библиотека как раз нужна для того, чтобы в рантайме создавать объекты по описанным моделям.
69 2340640
>>40589

>Ну не, это я для примера написал, на самом деле у меня отзывы про товар и комментарии к отзыву. То есть отзыв и комментарий не идентичны. Отзыв содержит ещё оценку.


"Отзыв на товар" - тот же комментарий, у которого нет родительского комментария, но есть оценка. А у комментария есть ссылка на родитель, но нет оценки.
70 2340643
>>40640
Ну так и разные модели значит получаются, разве нет? Или это норм такие разные сущности с похожими полями в одной таблице хранить?
Прост у меня там потом ещё будет другой тип товаров, который будет содержать все поля нынешнего типа товаров, плюс будут ещё дополнительные, специфичные для этих товаров поля. Ну и я тоже думал делать для него отдельную модель.
71 2340655
>>40639

>Есть ощущение, что ты пытаешься изобрести свой собственный pydantic.


Вот только я не собираюсь валидацию полей словаря проводить при каждой инициализации, так что пидантик тут оверкил.
72 2340665
>>40655
Вот приходит тебе жсон. Твои действия? Верить, что он корректный?

Есть ещё пакет attrs, и дополнительно к нему catts, тоже примерно для этих целей.

По описанию, ты хочешь делать какие-то модели, а для этого есть решения. Датаклассы это лишь минимальный функционал, который решили внести в стандартную библиотеку. Насколько помню, сделали его разработчики attrs.

Есть и серьёзный функционал, но во внешних библиотеках.
73 2340685
>>40643

>Ну так и разные модели значит получаются, разве нет?


Разные модели, которые отличаются полем? Они может для питона разные, но для БД это одна и та же таблица с двумя опциональными полями.

>Или это норм такие разные сущности с похожими полями в одной таблице хранить?


Так это не разные сущности для БД.

>Прост у меня там потом ещё будет другой тип товаров, который будет содержать все поля нынешнего типа товаров, плюс будут ещё дополнительные, специфичные для этих товаров поля.


Что-то ты там пытаешься нахуевертить непонятно. Скорее всего джанговская ORM обосрётся реализовывать твои фантазии. Поупырь свой мел и сначала реализуй таблицу/схему для товаров без специфичных полей для товара.
74 2340703
>>40665

>Вот приходит тебе жсон. Твои действия? Верить, что он корректный?


Джейсон приходит с бд/кэша, который трансформируется в словарь. Вот мне и нужно написать класс, который может инициализироваться со словаря, заместо перекидывания словарных литералов по всей кодовой базе.
75 2340729
>>40685

>Поупырь свой мел и сначала реализуй таблицу/схему для товаров без специфичных полей для товара.



Ну так я сейчас это и делаю. Пока что у меня только один вид товаров, отзывы к ним, комментарии к отзывам и лайки для отзывов и комментариев.

Но вот типа если магазин продает там резиновые хуи и пезды, будут отдельные модели для хуев и пезд или одна? Типа у них схожие поля типа производитель, материал, цена, но разные типа длина/глубина, специфичные для каждого вида товара. А что если категорий ещё больше? Получится, что у каждого товара будет дохера бесполезных пустых полей. И при этом нельзя будет задать поле с нужной информацией обязательным для заполнения, потому что обязательная длина для хуев не должна быть пустой для пезд.
Также и для этих комментариев. Получается оценка будет не обязательной, если все в одной таблице будет. Но отзыв не должен быть без оценки. Ну хз, мб это и не такая уж проблема конечно.
76 2340792
я вкатываюсь в питон
import яумамымолодец
print("Хелло ворлд")
77 2340808
>>40792
У нас сейчас импортозамещение. Всё правильно ты делаешь

=======
cat русификация.py
import builtins

builtins.печатать = print
========
cat яумамымолодец.py
def напечатать_привет(имя):
____печатать(f"Привет, {имя}")
=============
cat главный.py
import русификация
import яумамымолодец

яумамымолодец.напечатать_привет("Вася")
===============
python3 главный.py
Привет, Вася
===============

Кстати, вопрос, можно ли каким-нибудь образом русифицировать операторы? Просто библиотекой, а не собирая свой собственный питон из исходников?

Вот чтобы все эти import, for, if-else и т.п. по-русски были?
78 2340937
Скиньте годных репозиториев с неговнокодом, clean architecture, проекты на которые можно равняться, так сказать. Можно не только с питоном
79 2341152
>>38156 (OP)
Похоже завтра с нашего проекта будут увольнять токсичного ублюдка-лида. Буквально 2 недели назад к нам в проект пришел какой-то выебистый зумерок, на позицию лида канешн. Общался со всеми крайне вызывающе, постоянно намекал что код гавно (ладно бы только это) и что все мы - гавно. Очень часто начинал свои "просьбы" с предъяв, по итогу умудрился получить жалобы к начальству не только от нас-разрабов но еще и от ПМа (как он с ним посрался, не ебу, но он талантлив в этом).
Держку кулачки за то, чтобы этого мудилу выпизднули куда подальше.
80 2341166
>>40729

>Получается оценка будет не обязательной, если все в одной таблице будет.


Ты пытаешься натянуть бизнес-логику на структуры в БД. По факту у тебя отличие между отзывом и ответом в одном поле, относительно друг друга. Как ты будешь реализовывать эту логику в приложении, это уже от тебя зависит, но для бд - это сорта камментов к продукту.
81 2341209
>>40586
posts.objects.all().order_by('date')[:5]
82 2341211
>>41166
Ну почему, отзыв ещё относится к товару, а коммент к отзыву, получается тоже в одно поле не запихать.
83 2341217
Как мне следует назвать переменную, если я хочу назвать ее ключевым словом, например class. Писать типа class_ или вообще исключить подобный нейминг?
84 2341225
>>41217
klass
cls
c
85 2341256
Учусь писать красиво на numpy. У меня есть матрица MxN, я хочу из нее получить вектор длины M, где i-й элемент это самый частый встречающийся элемент в i-й строке исходной матрицы. Можно ли это сделать нампаевскими функциями в одну строчку?
86 2341258
>>41211
Отзыв относится к товару как коммент к этому товару.
87 2341265
>>41258
Как тогда понимать, какой коммент к какому отзыву относится?
88 2341269
>>41256
scipy.stats.mode
89 2341278
>>41258
Ну я тут нагуглил в общем полный гайд по этой теме, надо подумать канеш.
https://realpython.com/modeling-polymorphism-django-python/
90 2341281
>>41265
По полю parent_id, если его нет, то это отзыв.
91 2341299
>>41278
Не страдай хуйнёй. Объединять разные по сути вещи в одно это очень дурной стиль, лучше иметь разные модели, чем кучу if-else в дальнейшей логике, причём на всех уровнях, как в обработчике моделей, так и во вьюшках.

Это больше к вопросу о разнице между отзывами и комментариев к ним.

Если же разнородные товары в магазине, то может стоит объектным образом реализовать. То есть ты не описываешь каждое поле отдельно, а создаёшь JsonField или как-то так в джанго. Эти поля имею поддержку в современных БД, например в постгресе.

Тогда ты сможешь реализовывать кастомную логику, дополнительные атрибуты.
92 2341315
>>38156 (OP)
Как можно использовать Pyjion? Я честно говоря не понял. Можно ли с его помощью запускать код на питоне на дотнете?

https://github.com/tonybaloney/Pyjion
93 2341320
>>41299

>Не страдай хуйнёй. Объединять разные по сути вещи в одно это очень дурной стиль, лучше иметь разные модели, чем кучу if-else в дальнейшей логике


Действительно, лучше иметь кучу таблиц, описывающих одни и те же сущности, а если кучу if...else спрятать за фабриками, то это не считается и вообще настоящее ООП.

>так и во вьюшках.


Видно типичного пердолика, у которого даже вьюхи должны повторять структуру таблиц БД. Такие обычно сразу <table> в разметку вставляют, когда нужно отобразить список чего-то, потому что ведь БД же реляционная, а значит должна быть таблица! И пагинация оффсетами.

>Эти поля имею поддержку в современных БД, например в постгресе.


Джейсон поля имеют "поддержку" не означает, что по ним можно обычные процiдурки, типа индексации, проводить. В контексте товаров данные в этих джейсонах нихуя не будут "положил и забыл, фронт разберётся", их как минимум нужно будет фильтровать по значениям ключей.
94 2341334
>>41320

>Джейсон поля имеют "поддержку" не означает, что по ним можно обычные процiдурки, типа индексации, проводить.


Поле jsonb в постгресе позволяет проводить индексацию. Я посмотрел, что пишут, и джанго можно заставить индексировать эти поля, но руками что-то делать придётся, через ручные миграции.
95 2341336
>>39054

>>- Ну как вы не понимаете! Джанга больше 30 rps на одном воркере держать не может!


Запускаешь через gunicorn 100500 воркеров go brrrr
96 2341477
>>39054
А действительно, зачем там джанга? Такой ебенячий комбайн для одного сервиса аутентификации не нужен. Это как спринг на каждый пук тащить.
97 2341526
>>38156 (OP)
какую книгу посоветуюте новичку, а также как оцените книгу зеда шоу "легкий способ выучить питон"
98 2341749
Есть нетривиальная задача. Есть две камеры AXIS 3204, пытаюсь из них собрать стереокамеру (жду поставку CM4 из Китая), так вот вопрос с OpenCV.
Почему при калибровке и использовании undistort получаются мегакривые избражения? Настолько сильное искревление или хуево калибрую?
99 2341754
>>39054
А почему Django взяли, рил? Flask же тоже хуяк-хуяк и в продакшн, да тот же FastAPI с готовой авторизацией и асинхронкой. Вы же ленивые макаки
100 2341784
>>41526
нахуй
просто берешь без задней мысли и прогаешь
101 2341882
>>41477
>>41754
Очевидно, чел из команды только джаву и знает.
102 2342018
Анон помоги мне сделать расово правильную асинхронную http обертку над синхронной CPU bound нагрузкой.
Есть большой синхронный код (написанный не мной, а дата майнерами), который выполняется 200мс нагружая CPU. Хочется получить от сервиса 50 rps.
В текущей реализации я напердолил aiohttp + multiprocessing: втупую запускаю вычисления упакованные в объект в пуле и авейчу результат. Получается около 10 rps без тормозов на 4 ядерной машине.
Но я уверен можно сделать гораздо адекватнее. Ведь скрипт перед вычислениями постоянно делает одну и ту же инициализацию соединений с бекинг сервисами, например, которых можно избежать.
Хотелось бы как-то заспавнить инициализированные инстансы с синхронными вычислителями и не перезапускать их слишком часто (только если исключение или очень редко для защиты от течки) и так же асинхронно общаться с ними.
Как это сделать? Не укажешь направление, анон?
103 2342067
>>42018
Всё зависит от логики, какие у тебя данные, и вот особенно что это за инициализация с бэкенд серверов.

Я бы по возможности плясал от архитектуры вычислительных узлов, когда ты создаёшь вычислительные ноды, которые запрашивают задание у сервера и потом отдают ему результат.

Ноды ты можешь стартовать и через мультипроцессинг, и как внешнее приложение. А упрвляющий скрипт на aiohttp будет задания раздавать и собирать.
104 2342114
>>42067

>Всё зависит от логики, какие у тебя данные, и вот особенно что это за инициализация с бэкенд серверов.


Если б я до конца понимал что там происходит... формально я даж не пограммист, а "devops"
Имею ввиду коннекты к базе и кешу переустанавливаются почем зря при каждом запуске объекта в multiprocessing пуле. Как в похопе 25 лет назад. И какие-то прочие накладные расходы очевидно появляются. Типо запуска подпроцессов или передачи всего вычислительного объекта в процесс, хотя минимально достаточно только запрос/ответ пропихивать, а объект может работать вечно и быть запущенным заранее.

>можешь стартовать... как внешнее приложение


Как раз недавеча закончил подобный master/slave сервис, только еще хуже, со спавном докер контейнеров вместо процессов (нужен был отдельный сетевой неймспейс для каждого потока)... наелся сполна. Поэтому сейчас хочу как-то нативно, без изобретения велосипедов, каким-нить готовым модулем. Чтобы "фигакс", "фигакс" и продакшон.
105 2342137
Я хз, где спросить, поэтому спрошу у вас.
Хочу освоить ботоделие в телеге, почитал чуть, понял, что чаще всего на питоне пишут, пореже на жс, ещё реже на остальных.

Так вот: если я немного могу в жс, но есть ли резон под тг-ботов тратить время и осваивать питон? Типа стоит ли игра свеч, есть ли какие-то очевидные преимущества в питоновских либах, или всё одна хуйня?
106 2342160
В связке celery-redis можно реализовать аналог aws sqs по типу fifo?
Нужно внутри очереди организовать наборы тасков которые будут идти строго последовательно, т.е пока первый не завершится, второй не начнется. У него есть настройки приоритетов, да, но мне нужно динамически создавать эти группы через apply_async как это делается в aws при передаче message group id. Есть вариант создавать и гасить воркеры, но это выглядит не очень надёжно и хотелось бы его решать gevent воркерами.
Сам доступ к aws есть, но опросы идут долго поэтому хотелось бы через redis, не rabbitmq.

Сам сервис занимается передачей обычных сообщений, очереди нужны чтоб организовать последовательный порядок обработки в пределах одной группы сообщений которые маркируются своим id. Таких групп может быть сотни. Сами сообщений обрабатываются в реалтайме.

Очень не хочется писать костыли, но решений так и не нашёл.
107 2342164
>>42114

>Имею ввиду коннекты к базе и кешу переустанавливаются почем зря при каждом запуске объекта в multiprocessing пуле


Сколько я представляю, ты не можешь передать коннект в другой процесс. Даже если fork сделаешь. Коннект привязан к процессу, к его PID, этот PID можно посмотреть через netstat.

Поэтому только вариант, чтобы передавать данные в дочерние процессы, а коммуникацию делать из основного.
1552705159415.jpg12 Кб, 309x336
108 2342304
Человек может думaть в сaмых рaзных условиях и облaдaет этой возможностью блaгодaря мерцaющим, переменным звеньям.
1571737478ramka.png29 Кб, 1446x1019
109 2342318
сап. Какие либы посоветуете для генерации тех.отчетов в формате doc/docx/pdf с условием, что нужна рамка типа пикрил?
110 2342345
>>42318
конечно же TeX

мимо_датасатанист
111 2342407
>>42318
Я бы делал в HTML и дальше перегонял бы в pdf.

Правда наиболее адекватные тулы использовали внешний wkhtimtopdf, были обвязкой над ним были.

Сейчас глянул, вроде есть и нативные трансляторы, но судя по описанию примитивные, я сам их не пробовал. А если вёрстка сложная нужна, то нормальный тул нужен.
112 2342451
>>40586
а так?
posts.objects.all().order_by('-date')[5::-1]
113 2342501
Анон, стоит читать книгу Северенса? Вроде написано в 2016, но который раз упоминается питон 2 как новейшая версия, так что у меня появились сомнения о чтении
114 2342513
>>42501
Слишком простая книга, на мой взгляд, лучше пробегись по его вводному курсу(питоновскому py4e который) за пару-тройку недель, там материал этой книги покрыт и есть нормальные упражнения с ответами(сначала пытаешься сделать сам - потом смотришь код препода). Чарльз гениальный лектор в первую очередь. А в качестве вводной книжки возьми Think Python, за месяц-полтора прочтешь, если не работаешь/занят чем-то.
115 2342534
Что нужно, чтобы вкатиться джуном? Насколько хорошо джангу надо знать? Допустим из туториала освою техники создания блога ебаного, пойдет?
116 2342535
Возможно ли писать на фласке функциями? У меня ооп никак не идёт, но при использовании функций я хотя бы понимаю, как организовать бизнес-процесс программы.
117 2342556
>>42451
тоже не то, или я не совсем разобрался как это работает
вот такое решение подсказали
count = .....objects.all().count()
......order_by('date')[count-5:]
118 2342637
>>42164
Это верно. Но это не вызывает никаких вопросов. Ведь сокет для того и нужен, что бы ядро могло знать какому (одному) процессу доставить пакет.
Проблема то в другом, то что нет готового модуля, которым я бы мог запускать питонячий код в качестве подпроцессов и нормально с ними общаться: подкидывать задания для вычисления без перезапуска самого процесса (и переинициализации кода вычислителя). Нормально - это я подразумеваю что не через stdout/err, shared memory, unix soket'ы и т.д. из 70тых, я хочу современных высокоуровневых абстракций для обмена данными, ради чего я и пришел в питон - чтобы делать вещи быстро. Еще хочу получать от работающего процесса нативные исключения, а не stderr. Вообщем то все. Я сильно много прошу?
Если питон не располагает такими уже готовым к использованию абстракциями, то получается он не претендует на лучший инструмент для написания обвязки запускающей питон код. Это странно, имхо.
Если делать то что я хочу в Питоне руками: пердолиться с fork/unix сокетами или subprocess/std(out|err), то получается проще писать на go, в котором это все так же есть, только работает быстрее и жрет меньше памяти, т.е. даже лучше.
119 2342847
>>42535
Если есть выбор между классом или функцией, то предпочтение отдают функции и в питоне советуют писать функции.
Но и классы стороной обходить не надо. Без них многие вещи не сделать.
image.png29 Кб, 914x525
120 2342914
подскажите, как импутировать NA на основе данных из соседних столбцов. вручную, без пакетов
121 2342924
>>42847

> предпочтение отдают функции и в питоне советуют писать функции


Хм, почему? Я в контексте питона как раз слышал наоборот, что надо писать именно на ООП, а функции - мол, бессмысленная бесперспективная хуйнюшка.
пограмасты.PNG56 Кб, 1304x468
122 2342959
криптоинвесторы здесь?
123 2342974
>>42914
for cell in table:
__if cell == NA:
____cell = cell[+1] / cell [-1]
124 2343004
Посоны, кто-нибудь имел дело с постгресовским LTree?
Как path типа [2,0,1] преобразовать в дерево словарей с чилдренами? Может какая-то либа есть для этого? Или sqlalchemy это умеет?
вапвап.jpeg5 Кб, 299x168
125 2343014
>>42959
Охуенный план.
Но даже если так, зачем программисту твои 10к, если он может написать бота, который приносит пассивный доход?
126 2343062
>>42924
Потому что классы сложные, а функции простые. А делать надо просто.
127 2343113
>>38156 (OP)
Доставьте обоину где питон с белом круге на красном фоне, все это помотивам свастики
image.png16 Кб, 265x265
128 2343132
129 2343140
>>43132
Близко но немного не то
130 2343159
>>43113
Может не надо, а?
Не хватало ещё чтобы питон запретили.
image.png121 Кб, 398x867
131 2343165
>>43159
А разве ещё не запретили?
132 2343427
Почему в пихтон не завезли целочисленные фиксированного размера? Как их получить?
133 2343440
>>42137
Бамп вопросу.
134 2343444
>>43427

>целочисленные фиксированного размера


Шо?
135 2343520
>>43017 (Del)
Как же хочется ...
136 2343522
>>43427
Если тебе в питоне они нудны, значит ты что-то делаешь не так и это надо бы сделать по другому
137 2343528
>>43427
Смотри на модуль array, раз уж так хочется, можно через него работать с такими типами.
138 2343585
Яобязательно вкатотуся!
Вот
у
ви
ди
ти...

все вакансии опубликованы 23 апреля..
139 2343592
>>43585
опрос
500к есть кто получает и больше.
Чем занимаетесь на работе. Как так получилось? а то я уперся в 300к и дальше говорят иди в тим лиды
140 2343594
>>43592
ОВЕРЕМПЛОЕД
В
Е
Р
Э
М
П
Л
О
Е
Д
141 2343608
>>43594
ну блин, я хочу оверэмплоед на 2х работах по 500к
142 2343609
>>43608
А потянешь?
143 2343613
>>43609
ну вот хочу узнать, что это за работа на 500к на одной ставке
144 2343633
>>43613
Только тимлиды и еба архитекторы в крупных проектах. Во второые пробиться сложно, с первыми оверэмплоить не получится потому что будет созвон на созвоне через созвон. У меня даже на мидловой позиции приходится сливаться и выбирать приоритет между созвонами в определенные дни.
145 2343638
>>43613

>что это за работа на 500к на одной ставке


просто сеньор на удаленке на западного барина, 500K это всего где-то $40 в час, для них это не деньги даже
146 2343686
>>43444
>>43522
>>43528
хэши как тогда считать?
base64 и hashlib же есть в стандартной либе.
изображение.png109 Кб, 750x750
147 2343700
Почему логотип Питона - свастика, окрашенная в цвета флага Украины?
Гвидо является нацистом?
ruby-programming-language-copy.jpg58 Кб, 780x390
148 2343713
>>43165
Все так. Бандеровский язык. Вот взять логотип Ruby - он красный, как флаг СССР. Сразу видно, что создатель этого языка был коммунистом. Не смотря на то, что во время войны японцы были на стороне Гитлера.
изображение.png70 Кб, 811x488
149 2343720
Плюс назван в честь БРИТАНСКОГО шоу. А мы ведь знаем, кому Британия поставляет оружие.
Надо бы запретить эту змеюку подколодную, а нейросети можно писать на православном 1Скрипт:
https://github.com/EvilBeaver/OneScript
загрузка.jfif7 Кб, 225x225
150 2343756
Нахуя оператор not нужен? Зачем его применять, где?
151 2343763
>>43756
if a not None and a.big == ass:
__a.big.slap()
152 2343767
>>43763
Если что-то ложное, то зачем это объявлять истинным? А если истина, то зачем объявлять это ложью?
153 2343769
>>42534
Нет, не пойдет. Помимо основ питухона и самой джанги надо понять тему API, изучить DRF, алгоритмы и структуры, Docker, и тогда МОЖЕТ БЫТЬ появятся шансы попасть на собеседование на джуна.
154 2343770
>>43767
Потому иногда так удобнее для человеческого сознания. Например:
Если завтра не будет дождя, то пойдём купаться.
155 2343775
>>43770
Спасибо, а то на практикуме яндекса это вообще не разжевали.
156 2343794
>>43775
Потому что это должно быть понятно любому здравомыслящему человеку. По крайней мере, так считают лекторы, которые туеву хучу лет шарят за это, а тут им неочевидно что бывают непонятны вещи, которые для них элементарны
157 2343840
Добавлю, что свинка Пепа требует использовать not а не smth == False
158 2343880
>>43840
Это просто разные вещи, результат операций будет разный.

>>> not ''


True
но

>>>'' == False


False
равно как

>>> '' == True


False
159 2343903
>>43880
Нет, стоп. Я помню, что недавно какую-то задачу переписывал на not.

Вспомнил. Стек по принципу LIFO. И там короче пришлось переписать

if len(self.values) == 0:

на

if not self.values:

https://ideone.com/ob91Uf

Так что я слегка перепутал.
160 2343921
>>43903
Так питон пустые коллекции в ложные кастит.
161 2343922
>>43720

>А мы ведь знаем, кому Британия поставляет оружие.


Израилю?
162 2343925
>>43763
if dick is not None: do_fuck()
163 2343927
Часто видел что enum-ы создают через множественное наследование от строки:

class Statuses(str, enum.Enum):
----PENDING = 'pending'
----COMPLETED = 'completed'

Зачем так? Почему просто Enum сделать нельзя?
164 2343932
>>43927
Что бы можно было делать так
Statuses.PENDING == "pending"
А не так
Statuses.PENDING.value == "pending"

А так же для форматирования строк
165 2343937
>>43921
Я понимаю примерно, просто я теперь еще понимаю, что я проходил курсы от каких-то сишников и меня учили что == False и всякое такое это норма, а Пепа на это ругается.
166 2343938
>>43937

>я проходил курсы от каких-то сишников


Да ты считай никакие не проходил. Т.к. в голове у тебя полная каша.
167 2343962
>>43938
Раньше и каши не было.
168 2344042
>>43925
Я короче целый год хуярил конструкции вроде if not dick: do_fuck(), ну т.е почти никогда не проверял явно на None.
И только сегодня совершенно случайно узнал, что оказывается None не имеет ничего общего с [0, False, ""]
169 2344062
>>44042
А 0 и False имеют нечто общее?
170 2344072
Привет двач, я новичок в коде, подскажите как тренировать программирование? Когда ты на первоначальном этапе, где искать задачи? Занимаюсь этим ради хобби, хочу писать скрипты для дискорда, телеги, какую то простую автоматизацию реализовывать, что нужно делать? Про основы я уже почитал
171 2344085
Работаю тестером-ручником, хочу перекатиться в автомейшен. Выбираю между двумя языками, Java и Python. Опыт в программировании минимален. Что посоветуете и почему? Заранее спасибо.
172 2344108
>>44072

> что нужно делать?


писать скрипты для дискорда, телеги, какую то простую автоматизацию реализовывать
image.png1022 Кб, 1222x1106
173 2344112
>>44085
Опыт с ручным тестирование какой?
image.png114 Кб, 946x595
174 2344134
Разбираюсь с фастапи, в качестве сервера поставил uvicorn, есть два вопроса:
1. Сервер работает на 1.1 версии хттп? Это же очень старая реализация, почему не 2.0?
2. Почему у гет-запросов каждый раз разные порты? Клиент же один. Или система просто берет рандомный свободный порт из всего пула? Почему тогда не взять какой-нибудь 1488? Он у меня тоже не занят.
175 2344159
>>44134

>1. Сервер работает на 1.1 версии хттп? Это же очень старая реализация, почему не 2.0?


А нахуя тебе 2.0 за пределами мокрых писечек на вебсокетах? Если не понял, то 2.0 - бинарный стрим, и хуй бы ты такие няшные логи в соснолечке наблюдал на два-точка-ноль серваке. Ну и то, что стримы не кешируются, делает их непригодными для большей части интернета.
176 2344161
>>44112
Меньше года.
177 2344202
>>44159
Вот про это вообще не знал. Про бинарные стримы, кеширование и т.д. - где такую инфу вообще искать?

>А нахуя тебе


В моем представлении - если у приложения/соглашения/етс появилась новая версия, то значит, на это есть какие-то причины. Функционал, безопасность, удобство использования и т.д. Зачем тогда 2.0 сделали таким, что он непригоден для большей части интернета?
178 2344239
>>43638
спасибо, понятно куда двигаться теперь
179 2344314
>>44134

>Почему у гет-запросов каждый раз разные порты?


Мб это несколько воркеров?
180 2344451
>>44202

>где такую инфу вообще искать?


В спеке. Но этот видосик, рассказывая про дыры хттп2, заодно рассказывает и о разнице между ними:
https://www.youtube.com/watch?v=sI6YS9a7Qyg
Про кэш в спеке ничего не говорится, но стримы в целом не кэш-френдли. Или точнее сказать сервер сам должен пердолить реализацию кэша стримов для своей бизнес логики.

>Зачем тогда 2.0 сделали таким, что он непригоден для большей части интернета?


Потому что его делал гугл для своих задач, причём с обычным пердольным подходом "а давайте сделаем бинарный протокол чтобы БЫСТРА!". Он "быстр" в том плане, что за оптимизацию запросов нужно платить усложнением архитектуры. Но большинство сайтов интернета - не мегайобы с миллионами запросов в секунду, а вполне стандартные статичные хтмл странички, дёргающие API сервера клиентским скриптом.
image.png286 Кб, 1226x1180
181 2344520
Как с помощью xml.etree.ElementTree получить доступ к тегам Data?
182 2344670
>>44062
Имеют
183 2344696
>>44520
Читай про xpath
и дальше можешь делать что-то вроде
root.findall(".//Data") # все элементы Data на любом уровне
root.findall("./Table/Row/Cell/Data") # можно детально прописывать пути

Читай в общем доки про xpath. Питон хорошо поддерживает сейчас, сторонние либы не требуются. В древние времена нужен был lxml для этого.
output.webm1,5 Мб, webm,
424x221, 2:08
184 2344768
Сап двач. Для вката в методологию DevOps надо подучить python, для автоматизации. Видел тут книгу Автоматизация рутинных задач с помощью Pythonn, это оно? Или что ещё знать надо. Я если честно не представляю что там блять автоматизировать. Кубы крутятся, бабки мутятся. Нахуя там мой питон?
185 2344818
>>44768
Ansible на питоне, Docker CLI тоже на питоне, вот и думай
433f587671e52fdf9095feccbd8c3dc2.png4,1 Мб, 1920x1080
186 2345041
image.png438 Кб, 620x845
187 2345046
>>44768
Есть же книжка какая-то в телеге 22года про питон и ДевоПёс
'Python и DevOps: Ключ к автоматизации Linux.'
188 2345123
>>38156 (OP)
Ссылка по книгам не открывается нихуя.
Какая топ книга для вкатывальщика на русском языке?
189 2345154
>>45123

>Какая топ книга для вкатывальщика на русском языке?


Учебник английского.
190 2345277
>>45154
Ебал твою мать.
191 2345348
>>45277
Your impotent rage only serves to amuse me.
192 2345349
>>45123
Лутц устарел на 3 минорных версии интерпретатора, все свежее в блогах на английском и в ChangeLogs интерпретатора.
Удачи.
193 2345522
>>45349
Бля, тогда проще читать документацию.

>>45348
Твою мать ебет другой.
194 2345525
Стоит читать Северенса как начальную базу питона? Пока читал заметил что пишет то он про питон 2, а тредик говорит мол лучше сразу питон 3 учить
image.png613 Кб, 1200x695
195 2345550
Сап.
Хочу вкатиться в Питон для фриланса, до этого баловался немного и базовые вещи знаю.
Реально ли освоить его и сопутствующие вещи за ~6 месяцев и 4-6 часов в день (с 1-2 выходными) для создания чат-ботов для телеги/дискорда, парсеров и прочих подобных вещей попроще (не бэкенд)? Разумеется, если не ленится и прикладывать усилия.
196 2345613
>>45525
Чел, не "лучше сразу третий учить", а "нужно третий учить". Двушка уже давно в архиве, единственное, зачем её изучать - это чтобы понимать древнее легаси (но нахуй тебе это гавно).
197 2345624
>>44072
Чтобы быстро бегать на 100 метров — нужно быстро бегать на 100 метров.

Матчасть изучил и далее по нужной задаче двигаешься, по ходу гуглишт смотришь
198 2345683
Почему celery с gevent медленно опрашивает fifo sqs? Между тасками 3-4 секунды, пиздец.
199 2345713
>>45550
Нет.
200 2345979
Гайс, кто-нибудь шарит как деобфусцировать pyarmor???
201 2345992
Встретил такую штуку:

a = [5]
= a
print(b) // 5

Это что, это как, это как называется? Если в списке a больше или меньше одного элемента, то выкидывает ошибку. А как оно квадратными скобками список в число превращает, да на уровне переменной?
202 2345994
>>45992
[ b ] = a

Быстрофикс короче
image.png274 Кб, 650x521
204 2346027
>>45713
Поподробнее можно?
205 2346054
>>45550
Насколько базовые?
206 2346056
>>38156 (OP)
Привет двачик, привет программеры.
Горит ссессия. у кого есть возможносоть мне помочь ?
вот что нужно :
Разработать приложение, которое просматривает папки с именами от «1» до «9», находящимися в том же каталоге (в той же папке), что и приложение, и формирует полный список текстовых файлов (файлов с раcширением «*.txt»). Формируемый список должен включать полные имена файлов. Некоторые папки могут отсутствовать (например, имеются папки «1», «2», «4», «ABC»; приложение должно сформировать списки файлов только из папок «1», «2», «4»). Для контроля наличия папки использовать стандартную функцию DirectoryExists(Directory). Параметр Directory – имя папки, существование которой проверяется. Функция возвращает ИСТИНА, если указанная папка существует.

По команде пользователя приложение формирует индекс для списка ключевых слов для всех файлов. Список ключевых слов должен храниться в файле «KeyList.txt», который должен находиться в одной папке с приложением. Формат файла: одна строка – одно ключевое слов. Приложение читает этот файл при старте. Индекс формируется по частичному соответствию (т.е. ключевое слово может входить как часть другого слова, например, ключевое слово «заказ» будет входить как часть в слова заказы, заказано и т.п.) ключевым словам. Регистр ключевых слов и слов в файле может различаться. После того, как индекс сформирован, пользователь указывает (выделяет в списке) ключевое слово и выполняет поиск файлов, в которых встречается это ключевое слово. Двойной щелчок на имени найденного файла должен открывать окно с этим файлом и выделенным ключевым словом ближайшим к началу файла.

желательно бы просмотреть потом вместе результат.
Отблагодарю как смогу,я студент не особо подкрепленный в финансовой части.
207 2346062
>>46056

> Индекс формируется по частичному соответствию (т.е. ключевое слово может входить как часть другого слова, например, ключевое слово «заказ» будет входить как часть в слова заказы, заказано и т.п.) ключевым словам



Пиздамба
208 2346077
>>46056

>Разработать приложение, которое просматривает папки с именами от «1» до «9», находящимися в том же каталоге (в той же папке), что и приложение, и формирует полный список текстовых файлов (файлов с раcширением «*.txt»). Формируемый список должен включать полные имена файлов. Некоторые папки могут отсутствовать (например, имеются папки «1», «2», «4», «ABC»; приложение должно сформировать списки файлов только из папок «1», «2», «4»). Для контроля наличия папки использовать стандартную функцию DirectoryExists(Directory). Параметр Directory – имя папки, существование которой проверяется. Функция возвращает ИСТИНА, если указанная папка существует.


Легко.

>По команде пользователя приложение формирует индекс для списка ключевых слов для всех файлов. Список ключевых слов должен храниться в файле «KeyList.txt», который должен находиться в одной папке с приложением. Формат файла: одна строка – одно ключевое слов. Приложение читает этот файл при старте. Индекс формируется по частичному соответствию (т.е. ключевое слово может входить как часть другого слова, например, ключевое слово «заказ» будет входить как часть в слова заказы, заказано и т.п.) ключевым словам. Регистр ключевых слов и слов в файле может различаться.


Если можно прикрутить постгресс, то там это встроенное. Средняя сложность.

>После того, как индекс сформирован, пользователь указывает (выделяет в списке) ключевое слово и выполняет поиск файлов, в которых встречается это ключевое слово. Двойной щелчок на имени найденного файла должен открывать окно с этим файлом и выделенным ключевым словом ближайшим к началу файла.


Я в гуи не умею, не могу оценить.
209 2346096
>>46077

>Если можно прикрутить постгресс, то там это встроенное. Средняя сложность.


Постгрес для этого не нужен совсем. И задание не про это.

Надо просто считать сначала список ключевых слов, привести их к нижнему регистру. Потом считать файл, привести тоже к нижнему регистру, и для каждого ключевого слова проверять тупо вхождение его как подстроки в строку (всё содержимое файла). Задача лёгкая.

Нужно ли как-то хранить индекс не сказано. Но можно любым способом просто сохранить.

Самое заморочное тут гуи, потому что надо уметь с гуи работать и вообще тут какая-то динамика при этом есть.
210 2346105
>>46056

>Для контроля наличия папки использовать стандартную функцию DirectoryExists(Directory)


Чел, а ты уверен, что это по питону задание?
211 2346106
>>46096

>Потом считать файл


А, файл уже дан. Я думал, его самому сформировать надо, то есть все корни из текстовых файлов достать (сам бы я это делать не стал, поэтому постгрес)
212 2346108

>Справочник функций и процедур Delphi: DirectoryExists



>Directory.Exists(String) Метод (System.IO) | Microsoft Docs



>DirectoryExists - Free Pascal



Так блядь
213 2346109
>>46108
Наверное, там с гуи попроще, не кроссплатформа же.
214 2346128
>>45683
Бамп. Наверное, будет проще написать свой воркер и юзать редис, чем пытаться решить проблему.
215 2346137
Насколько вообще целесообразно делать кастомные решения вместо готовых? К примеру, не хватает функционала или он наоборот излишне перегружен
Такая практика часто используется?
216 2346141
>>46137
Регулярно.
В конце концов, откуда-то же появляются разные технологии для решения одной задачи?
217 2346180
>>46056
это делается в три строчки, ленивая ты жопа
image.png192 Кб, 493x631
218 2346217
>>46054
Прочел почти всю книгу с пика, порешал задачи, это было ~2 года назад, сейчас собираюсь начать заново + немного могу в SQL. Алгоритмами, regex и прочим подобным не интересовался
219 2346250
>>46217

> Алгоритмами


Чел, базу знать обязан без нее я хуй знает что ты там писать будешь хорошо если n2
220 2346261
>>46217
Лучшая книга по Питону.
221 2346266
>>45979
нет, такое только темные маги могут
222 2346365
>>46128
Так и сделал. Получилось удивительно мало строк. Даже хз. И память вроде не выжирает. Завтра потестить основательно надо будет
223 2346465
>>46105

дневные на долфине каком-то делают, студенты старше делали на шарпе и питоне...
Пример графического интерфейса.png209 Кб, 862x932
224 2346470
>>46062
>>46077
>>46180
ребят, я понимаю что бессмысленно просить от вас кураторства по данному вопросу, но помогите хотя бы с направлением. я по натуре художник, а не вот это всё, что поделать приходится учить не интересную хуйню, кисточки меня не прокормят, настроился изучить хоть базу, чтобы представлять дальнейшие пути развития, но материала очень много. Курю гайды, а там переменные и функции, подскажите какой этап обучения мне даст достаточно навыков, чтобы нарисовать прогу с интерфейсом как на пике.

Вот у меня лежит гайд на десктопе с данными видео :

>алгебра и операторы до if


> строки и манипуляции с ними


> списки и работа с ними


> кортежи


> модули


> парсинг


> консрукторы наследование


> полиформизм


> декораторы


>лямбда


>регулярные выражение


скюэль

> заканчиваются уроки на теме зипфайл



уроков около 50 шт, перечислил хардлайнеров. мне хватит этой инфы разобраться что от меня хотят ?
Что ещё покурить ?
225 2346472
>>46470
Тебя интересует
оператор if
цикл for
работа с файлами в операционной системе (os.walk, os.path, open)
поиск в строке (str.find)
списки (потому что ты будешь составлять список)

Этого хватит, чтобы сделать первые два пункта. Как сделаешь, возвращайся, будем дальше курировать твою работу.
226 2346491
>>46472
спасибо :з
227 2346501
>>46470
У тебя в задании еще не сказано что именно от тебя требуют в плане GUI (точнее сказано, но расплывчато). Если есть возможность спросить на каком именно фреймворке преподу предпочтительно написать интерфейс - обязательно спроси.
Снимок экрана 2022-04-29 в 23.31.00.png132 Кб, 1126x606
228 2346725
Господа-джангисты, что ему не нравится?
Снимок экрана 2022-04-29 в 23.33.00.png142 Кб, 1234x610
229 2346727
>>46725
Не тот скрин
230 2346755
Как в питоне, в виндовсе, выполнить две команды субпроцесса, а точнее команды ффмпега пасс 1 и пасс 2, в одну строчку?
такаядрянь = пасс 1 ёбаразделитель пасс 2
субпроцесс.попен(такаядрянь, и далее)
231 2346769
>>46727
query-параметры не так передаются. Не помню что там точно, к этому говну больше 2х лет не притрагивался
232 2346839
Аноны, у меня такая задача.
У меня есть большой набор из условно говоря десяти блоков вопросов. В каждом блоке я отбираю несколько вопросов. Как в итоге составить "билет" из отобранных вопросов?

Математику отбора я сделал (онаа сложна и не имеет значения), но вот как сделать, чтоб у меня генерировался билет.. у меня ещё вопросы с картинками и всё такое, банально в вордовском файле валяются. Я на данный момент знаю, какие именно нужно подправить и куда.
В каком виде в питон это всё нужно загнать, чтоб это реализовать?
233 2346846
>>46839

>В каком виде в питон это всё нужно загнать, чтоб это реализовать?


В виде dict
234 2346874
>>46501
А ещё не забудь спросить на какой машине делать, репу, ветку, ключи, докер конфиги, версии и requirements. А и ещё тз подное попроси.
Пока не ответят, даже не начинай делать
235 2346881
>>46727
Параметры в urls не прописываются. Ты их должен брать через request.GET.get()
236 2346942
Есть список с повториющимися элементами типа [1,3,1,2,7,2,3,6]
Как сделать словарь, чтоб ключом были элементы списка, а значением их количество в списке - {1:2,3:2,2:2,7:1,6:1} ?
вот так чтоб было
Я супер ньюфак, помогите
237 2346946
>>46942
Counter
238 2346955
>>46874
Все так
239 2346965
>>46946
>>46946
Спасибо
240 2346998
>>46846

> dict


Туда можно засунуть целый кусок текста с картинкой?
241 2347002
>>46998
Да.
242 2347004
>>46755

>такаядрянь = пасс 1 ёбаразделитель пасс 2


>субпроцесс.попен(такаядрянь, и далее)


пощади...

Нахуя тебе в одну?
243 2347022
Чего можно изучить на питоне, чтобы на работу взяли?
Кроме вебмакакинга и машоба.
244 2347033
>>47022
Становись автотестером
245 2347047
Что по работе для джунов сейчас на пайтон?
Ононим 246 2347141
Поясните за парсинг XML
Везде предлагают xml.etree, но он мало того, что хитровыебанный до жути, так его ещё и питоновские доки не рекомендуют
247 2347166
>>47022
Веб это самый простой вариант. Если брезгуешь, то значит проблем с поиском работы у тебя нет
image.png65 Кб, 820x920
248 2347240
Спасибо дядя кабан, постажировались.
249 2347244
>>47240
А что ты хотел. Я тут недавно задумался, сколько народу в год впускается с вузов в том же ДС и просто охуел от мысли, а где столько рабочих мест взять. Ладно бы по 200 тел в год, но их ~1к, а еще вкатуны со стороны.
250 2347252
>>47240
Это отсеивалка для омежек нерешительных. Никто не ожидает, что у тебя есть реальный год коммерческий разработки.
251 2347258
>>47252

>требования


>опыт - не менее одного года


>да никто не ожидает что у тебя реальный опыт



Дружище, иди разу синиор архитектом, вдруг там тоже чего не ожидают
252 2347270
>>47258
Я когда вкатывался рассылал резюме по всем джунским вакансиям. Часто его тупо не читали конечно но спустя недели 2 зашел на собес и затащил его
253 2347285
>>47240
Наверное, всё же речь идёт об общем опыте работы, а не только в айти
254 2347289
>>47258
Я так и делал в своё время. В конторах какие-то совсем неадекватные требования выставляли, я даже веб не знал, учил по тестовым заданиям. Но кодить умел, лет так 10 уже раз через раз.
Отправлял везде где мог, ходил на собесы.

В итоге через месяц нашел работу, где требовался джун с опытом, а я ни тем ни другим не был даже. В резюме писал весь опыт и всё что могу со всех предыдущих работ.

Так что да, не надо ссать и бояться пиздеть. Они почти всегда ищут решительных и умелых людей. Если это обьявление тебя отпугивает, значит они успешно отсеяли тебя.
255 2347300
Питонисты вообще сборщиками пользуются? Ну типа как gradle, maven, gulp и прочая хрень? Погуглил, вижу десятки решений. Есть какой-то стандарт или несколько популярных?
256 2347302
>>47300
Питон скрипт может во что-то собираться? Хм.
257 2347304
>>47302
Сборщики ещё и зависимостями управляют. Мне скорее это нужно, а не упаковка проекта в зип.
258 2347309
>>47304
Requirements через pip freeze или pipreqs?
259 2347310
>>47309
Если тебе нужно это, то используюй второй вариант (надо накатить), первый собирает вообще всё что есть.
260 2347313
>>47310
Понял, спасибо.
Как же некомфортно на незнакомый стек переходить, яебу.
261 2347320
Есть возможность делать потоки независимыми? Я пока знаком только с with threadpoolexecutor.
Есть один основной цикл который раздаёт задания и запускает потоки. Но проблема в том, что если один поток будет работать слишком долго, остальные просто будут ждать его, а хотелось бы реализовать следующий сценарий.
Основной цикл получает набор заданий, запускает потоки и забывает о них. Получает новый набор заданий, запускает следующий и так далее. Т.е потоки живут своей жизнью независимо друг от друга

Я правильно понимаю что такое можно сделать только через процессы, а не треды? Можно ли сделать треды независимыми?
262 2347380
>>47320
Чет нихуя непонятно чего тебе надо. Треды параллельны в том смысле, что если один чего-то внешнего ждёт, то другой в это время может работать. Если один ждёт слишком дольше чем остальные, можешь вместо пула руками их делать и досыпать новые задания не дожидаясь старых.
Если тебе нужно прямо чтобы оба потока одновременно процессор ебали, то это только через процессы.
263 2347434
>>47002
Как
264 2347453
Суп. Учу питон уже третью неделю и нихуя не получатся решать элементарные задачки, отсюда пропадает мотивация дальше учиться. Кто сейм? 34 лвл. Алсо, пока не работаю и все свободное время посвящаю учебе

Вот например:
"Напишите функцию, которая находит число Фиббоначи по его номеру. В качестве аргумента подается целое положительное число n (число). "
Решение простое, но я даже его не могу выполнить.

А как вы начинали учиться? Быстро ли вкатились?
265 2347510
>>47453
Я не вкатился.
266 2347520
>>47289
В свое время - это сколько лет назад?
267 2347522
>>47320

>Есть один основной цикл который раздаёт задания и запускает потоки


Че?

>Но проблема в том, что если один поток будет работать слишком долго, остальные просто будут ждать его


Это не то как работают Thread-ы в питоне. Ты че-то путаешь

>Основной цикл получает набор заданий, запускает потоки и забывает о них. Получает новый набор заданий, запускает следующий и так далее. Т.е потоки живут своей жизнью независимо друг от друга


Гугли celery и не изобретай велисипеды
268 2347538
>>47453
Берешь и решаешь другую задачу попроще.
Не трать время на то, что не получается решить меньше, чем за два дня (когда вообще прогресса в решении не чувствуешь).
Набивай опыт и понимание на других задачах, потом возвращайся к этим.
Попробуй изучить теорию алгоритмов, оттуда появятся идеи. Тот же известный курс: https://www.youtube.com/watch?v=KdZ4HF1SrFs&list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0 (не обязательно все проходить, понимать и запоминать, если умеешь схватываешь общую идею и понимаешь как применить).
269 2347541
>>47453
>>47538
Если хочешь, можем списаться, пытаться решать и вкатываться вместе. Я вот тоже хочу начать по задаче в день грызть с литкодов.
270 2347544
>>47320
если хочешь обойти ограничения GIL, при этом реализовать свои workers, то изучай пакет multiprocessing

можно взять Celery, как предложили выше, если тебе это нужно не ради изучения методом велосипединга, а для решения реальной задачи
16513110576120.png65 Кб, 820x920
271 2347591
>>47258
Там вот это самое важное.
272 2347650
>>46217
Что после этой книги читать?
273 2347730
>>47520
Год примерно
274 2347739
>>47522

> Че?


Брокер-воркер

> Это не то как работают Thread-ы в питоне. Ты че-то путаешь


Threadpoolexecutor так и работает. Дошел до обычных thread и сделал что хотел

> Гугли celery и не изобретай велисипеды


Я уже месяца четыре задаю тут вопросы про celery, но кроме названия тут про него никто не знает. Вдоль и поперек обошёл его функционал и понял что он не делает то что мне нужно, потому сделал свой.
275 2347746
>>47739

>Я уже месяца четыре задаю тут вопросы про celery, но кроме названия тут про него никто не знает. Вдоль и поперек обошёл его функционал и понял что он не делает то что мне нужно, потому сделал свой.


Базаришь? Сдается мне ты просто доки не читал как следует вот и все. Что тебе надо-то конкретно? Из той мешанины, что ты понаписал сложно суть уловить. В celery можно создать произвольное число воркеров и произвольное число очередей, можно привязать редис а можно реббит, можно выставлять определенный приоритет таску, можно использовать разный бекенд для хранения результата, можно паковать таски в чейны, можно запускать таски по cron-у а можно откладывать на произвольное число секунд. Ты уверен что он не решает твою задачу?
276 2347754
>>47746
Забудь. Человек не понимает что такое тред, что такое пул тредов а что такое процесс. Но уже пишет какие-то там "свои решения" т.к. видите ли проверенный годами инструмент ему не подходит. Очередной вкатуся с интеллектом хлебушка, но очень высоким ЧСВ.
277 2347758
>>47544
Я работал с celery. Это на проекте, а не задачках.

Сам проект - чаты и сообщения. Сообщения обрабатываются долго из-за ущербного апи, примерно 2-5с. Поэтому их надо пихать в очередь. Сообщений много, массовые рассылки.
Кажый чат - отдельная очередь, причем fifo, это важно. При этом желательно иметь защиту от спама одним и тем же сообщением на один чат. Так что эти очереди должны создаваться и обслуживаться на лету.

Под критерии подошел sqs. Внутри fifo есть группы fifo, т.е каждая группа обрабатывается параллельно, но внутри - по порядку. Вроде всё ок.
Но есть серьезные проблемы со скоростью. У celery есть два типа воркера - prefork(процессы) и gevent(треды). Первый между тасками имеет задержку в две секунды. Второй - 5 секунд. На простой таск который просто выводит сообщение в лог такая задержка.
Ладно, хорошо. Может получится с redis такое сделать? Он быстрее и те же самоые воркеры очень быстро получают таски. Я много всего обошел, доки, либы, но celery не умеет делать динамические очереди, вообще ни на одном брокере. Точнее умеет делать сами очереди, но не назначает их рабочим. А в самой связке celery-redis fifo отсутствует как явление, делать одиночного воркера на очередь это идиотизм, как говорил, таких очередей может быть тысячи, позтому нужен именно мультитрединг, который сам будет назначат один поток на одну очередь, если она есть.

Rabbit? У нас от него отказались, да и я прошёлся по нему и не нашел ничего похожего.

В команде питонистов нет. Девопса нет. Точнее есть, но он больше техлид и пхпшник, но такие задачи не делал.
278 2347765
>>47746
Скажи как в celery с redis на лету делать fifo очереди и назначать их рабочим. Число очередей произвольное и непостоянное.
279 2347768
>>47758
Забить хуй на celery и пилить свое. Только не говно а ту же систему с очередью, консьюмером и продюсером. Юзай Кафку, консьюмеры и продюсеры - питоновские процессы
280 2347770
>>47758
То что каждый чат - отдельная очередь это понятно. Но нахрена по отдельному воркеру на каждую очередь?
281 2347777
>>47541

pitonpisthB2onANUSy=~GandexPUNCTUMrCLnu
282 2347778
>>47768
Я сделал с redis примерно так.

send - отправляет дикт в указанную очередь и название метода которым надо его обработать, как это делается в celery. В redis они сделаны в виде списков для доступа через lpush и rpop.

Очереди которые обрабатываются в текущий момент помечаются ключом в redis, через redis lock конечно, так что гонок нет.
Основной тред запрашивает список всех свободных очередей и запускает каждому свой отдельный тред. Количество тредов ограничено и контролируется само собой.
Тред-обработчик помечает очередь в redis ключом что он обрабатывается, так что второй такой не запустится. Обрабатывает до тех пор пока очередь не кончится. Если сообщений нет - делает паузу между опросами в 1с. Если их нет достаточно долго - тред завершается и удаляется ключ. Каждыц тред имеет своё соединение из общего пула с redis.
Так же сделал gracefull shutdown. Ключи блокировок временные, так что они не зависнут.

Делал тесты. Запускал несколько воркеров на разных машинах. Загружал большой набор тасков. Дублей нет, гонок нет, потерянных сообщений нет.

Был вариант использовать встроенный queue, чтоб брать по несколько сообщений за раз, но в случае сбоя их придётся выгружать обратно, так что смысла в них не нашёл.

В итоге за пару дней - код на 150 строк. Очень быстрый. А я ебался с celery месяца четыре. Поставлю на тест в проект, грузить тасками и следить за утечками памяти, если они будут.
283 2347779
Как сделать вэбсокет соединение в рамках одного стрима, не перезапуская стрим для изменения списка подписок?
284 2347783
>>47770
Чтоб был fifo. В случае с redis, если сделать воркера с concurrency, то они будут забирать таски вразнобой. В celery нет fifo, это должен обеспечивать брокер, например sqs так делает.
Это не моё решение, какое нашёл в интернетах. Там серьезно предлагают делать одиночного воркера на каждую очередь чтоб был fifo.
285 2347881
>>47765
Настолько боишься что один таск выполнится раньше другого? Сколько по времени обычно занимает исполнение одного таска по отправке сообщения? И сколько таких сообщений обрабатывает ваша система за секунду?
286 2347895
>>46261
почему ее нет в оппосте?
287 2347906
>>47289
на самом деле лол в том, что они так отпугивают адекватных.
Потому что реально дисциплинированный и адекватный чел реально оценивает себя и ждет такого же от окружающих.
типа что написано - то и требуется.
а не какая то хуйня, которую написали для прикола.
288 2347908
>>47906
Ты не "адекватный" и "дисциплинированный". Ты ссыкло.
ага конечно да.gif2,7 Мб, 300x300
289 2347911
>>47908
быдло закукарекало
290 2347914
>>47911
Быдло/нибыдло - это ведь ты никак устроиться не можешь, а не я. Я тебе прямым текстом говорю о причинах, можешь биться в истерике сколько влезет, но ситуацию это не изменит.
291 2347928
>>47914
Я уже кодирую вообще то на зоне, слышал про новый закон? с зоны кодить можно
292 2347941
>>47928
Что кодируешь? Перестукиваешься с соседними хатами?
293 2347950
>>47881
Выполнение одного раньше другого нельзя, в пределах одного чата одновременно выполнять нельзя. По времени секунд 2-5, штук 6-10 запросов на апи с кучей проверок, которые никак не распараллелить и с ограничением на 6 запросов в секунду. За секунду сколько хз, сервера на хетзере, наверное много. А приходит обычно тоже много сразу. Делаю с запасом на большие нагрузки и дублированием на другой машине.
294 2347951
>>47941
цифровой гулаг
15257413923460.webm489 Кб, webm,
944x648, 0:01
295 2348012
>>38156 (OP)
Анон, я тупой, и всё такое, но как просто написанный класс, без инициализации с присваиванием имени, при запуске кода в IDE запускает блять цикл который в него вложен??? Он же должен просто глянуть на класс и закрыть консоль???
296 2348022
>>48012
class World:

cycle = int()
sec = int()

def __init__(self, name):

self.name = name

while cycle < 3000001:

cycle += 1

if cycle == 1500000:

cycle = 0
sec += 1

print(int(sec / 2))
298 2348038
>>48025
Отступ поправь, у тебя сейчас цикл вне функции __init__.
То что он в теле самого класса выполняется это всрато, но видимо по той же логике, что и cycle = int(), который у тебя будет полем класса, одним общим на все объекты.

В питоне классы это такие же объекты как и всё остальное, class World - просто синтаксический сахар под конструкцию по выполнению которой в переменную World записывается объект, хранящий твои методы и прочую херь.
videoplayback (11).mp461 Кб, mp4,
450x360, 0:02
299 2348050
>>48038
смотри - я создаю мир со свойством течения времени, я думал должна быть переменная которая изменяется циклом while по ходу выполнения кода и относительно неё могут происходить всякие другие функции, типа if sec == 3: пукни два раза тремя жопами, поэтому написал в теле класса вот это вот всё, а если цикл внутри __init__ то что будет ща буду тестить, хуле
Vivaldi - The Four Seasons Spring - Netherlands Chamber Orc[...].webm11,5 Мб, webm,
640x360, 1:42
300 2348078
так поразмышлял посидел - наверное надо выносить цикл из тела класса и обращаться к переменным как World.sec и из этого строить цикл снаружи, я просто на самом деле тупой и питон учил на степике.
301 2348085

> питон ругается на импорт, поправил


> теперь джанга ругается импорт, поправил


> снова питон ругается на импорт


аъаъаъаъаъа
302 2348127
>>47950

>По времени секунд 2-5


Шо? Вы чего туда накрутили? Вы видосы склеиваете что ли? Или парсите жсоны по 80к строк?
303 2348162
>>48078
>>48050
Тебе бы питон подучить, алгоритмы и структуры там покодить.
А то, что ты вроде как пытаешься натворить называется event loop или game loop. В движках уже запилено, нужно только разобраться как использовать.

Вот про паттерны можно читнуть
https://gameprogrammingpatterns.com/game-loop.html
304 2348169
>>48127
Много запросов. Проверить одну хуйню, если нет сделать вторую, если есть третью, потом ещё запрос и ещё дальше. Я ж говорил, апи ущербное.
305 2348172
>>48162
Ну, я учу, потому и ищу ответы на вопросы. А читая про всякие Arcade или Pygame или PyQt5 постоянно натыкаюсь на нытьё про "мало возможностей". Пройду по ссылке, конечно, спасибо.
306 2348183
>>45046
Спасибо, взял на рутрекере
307 2348189
>>48169
Это cpu-bound задача такая? Или столько времени на обращение к базе идет? Что профилировщик говорит? В любом случае это пиздец ненормально.
308 2348219
>>48189
Это работа со сторонним апи.
309 2348222
>>48189
В общем проект связывает разные crm и мессенджеры. Надо проверить наличие контакта, сделки, чата с ним внутри crm и прочие такие штуки. Можно конечно часть инфы хранить у себя в базе, но это такой себе вариант. Если был бы просто один запрос, то было бы отлично, но нет. Часть методов у них работает отвратно, а некоторых нет совсем. Сами разработчики у них ленивые жопы.
310 2348223
>>48222
Ещё у них бывает такая штука, что сообщения отправленные в малый промежуток времени приходят на сервер не по порядку. Приходится их предварительно сортировать по timestamp, что опять же увеличивает время обработки.
311 2348256
>>48223

>сообщения отправленные в малый промежуток времени приходят на сервер не по порядку. Приходится их предварительно сортировать по timestamp


Задам очевидный вопрос: хули этим не занимается фронт?
312 2348261
А можно ли из байт кода (.pyc файлы) получить исходники?
313 2348263
>>48256
Ех, если бы, но он не наш, а тем просто поебать
314 2348268
>>48263
Доноси это до них, пусть приводят в порядок. Я бы принципиально такой хуйней заниматься не стал.

моя первая работка как раз была связана с чатами (Вебим), приход сообщений вразнобой - обычная тема, упорядочиванием должен заниматься фронт
315 2348506
>>47252
Кабан может не ожидает, а херочка - вполне.
316 2348535
>>48261
Можно. Но есть нюансы. Могут быть проблемы, если код был обфусцирован, кроме того надо обращать внимание на конкретную версию питона, который сгенерировал этот байткод.
Вот несколько инструментов для восстановления:
https://github.com/zrax/pycdc
https://github.com/rocky/python-decompile3
https://github.com/rocky/python-uncompyle6
317 2348634
Гайс, помогите найти поистине сочный материал по тг-ботам, с учётом всех актуальностей и примером с шаблоном. Видел курс Кости Latand, но есть небольшое ощущение неактуальности его
318 2348715
Анончики, помогите пожалуйста с подключением бд к тг боту. https://www.codepile.net/pile/em0Anywl

Проблема в том, что при запросе бот выводит только 1 элемент. Почему так происходит? Сдается мне я обосрался в функции вызова. Код не весь, специально отсеял все лишнее
319 2348883
>>48715
Так сколько у тебя записей в users?
2022-05-02x22:15:58.jpg282 Кб, 3440x1440
320 2348891
ужики чому асинхронность не взлетает?(
2022-05-02x22:22:52.jpg278 Кб, 3440x1440
321 2348895
а все гады разобрался =^-^=
322 2348902
>>48883
users выглядит как на пике, притом что при sql запросе на вывод всей таблице, бот выводит только id из нее, то есть единицу.

При всем при этом, если в фунции def conn() заменить return на print, то в ide выводится вся таблица в виде списка. Пик 2.
323 2348904
>>48715

> Почему так происходит?


все потому что гоблин ебанный двуличный мракобес, с пресмыкающейся пассивкой дементием, а клим гадкий гомофоб и пидорас, ну а ты каложор, все просто.
324 2348905
>>48904
По моему вопросу что подскажешь, если представишь, вместо таблицы с гоблином, таблицу штаба нэвэльного?
325 2348910
Помогите разобраться с async-await, скажите что прочитать и что накодить, чтобы понять всё.

У меня есть хуита, которая принимает запросы и работает нормально. Но иногда в async-функции она выполняет код по 40-80 секунд (блокирующий) и в это время она ни на что не отвечает, обрабатывает все прилетающие за это время запросы потом разом. Я попробовал в отдельных поток запихнуть медленный код, но из другого потока await-функции не срабатывают выпадая со странными ошибками.
Я могу переписать вообще всё полностью без asyncio просто как обычное многопоточную программу (я много писал на с++ многопоточного) через свои способы синхронизации и треды, но мне кажется что в asyncio буквально две строчки кода должны быть, которые позволят в другом треде выполнять медленный код, а потом возвращаться в основной поток. Подскажите как нагуглить это, а (ещё лучше) что изучить, чтобы таких вопросов про асинхронщину не возникало больше.

Только сейчас увидел скрины выше, забавно что у кого-то то же треды и asyncio
2022-05-02x23:52:56.jpg717 Кб, 2765x1439
326 2348921
>>48905

> нэвэльного


популист, его штаб состоит из точно таких же воров и мразей

> что подскажешь


сменить ублюдонскую белую тему, это пол пути к успеху, потом можешь начинать гуглить

>>48910

> я много писал на с++ многопоточного


какой же ты мерзкий и жирный

> что изучить


изучи еще больше уебищных юзлес крестов, подрочи байты, авось снизойдет умение гуглить хотя бы оф доки додик

у меня от раньше выполнялся код почти минуту и все было заебись, а щас почти весь выполнился за секунду и меня послали нахуй ыыы
327 2348925
>>48921
Так а зачем ты пукаешь, если ответа дать не можешь? Мама в детстве не долюбила и пытаешься хоть так заполучить частичку внимания?
2022-05-03x00:40:29.jpg724 Кб, 3440x1440
328 2348936
>>48925
чтобы поджечь тебе сраку и побудить к действию, но ты додик, девочка-внутри или жироеб, поэтому просто обмякаешь

тебе тяжело по жизни будет абсолютно везде и во всем..
426864412.jpg30 Кб, 400x300
329 2348937
>>48936

>чтобы поджечь тебе сраку

330 2348945
А я снова спрошу, чем парсить xml на клятой змее без анальной боли
331 2348961
>>48945
И снова получишь тот же ответ
332 2348967
Взял новый ноут поставил пучарм и код выполняется как будто с милисекундной задержкой, с чем это может быть связано? на старом ноуте такого вроде не было. Я даж проверил тот же код у меня занимает 2 сек а на сайтах с питоном оналйн 0.9, бляяяяя я ща свехнусь ЧЗХ
333 2348972
>>48967
Даже хз, где это видано чтоб один и тот же код на разных машинах с разной скоростью работал, хмм
334 2348974
>>48910
Делаешь threading.Thread даешь start, а потом где надо вызываешь join чтоб дождаться результата выполнения, если нужно. Если надо чтоб тред завершался вместе с основным потоком, даешь параметр daemon=True. Если хочешь запустить несколько потоков и сразу получить их результат, есть функция покороче, threadpool через with
335 2349016
>>48945

> парсить xml на клятой змее без анальной боли


все знают что питоняшка топовый чойз для скраппинга, НО ЭТО НЕ ТАК БЛЯДЬ !

хмл формат говна хуже жсон параши, просто люто уебанский цырк с полями без параметров

такой кококо маленький и охуенный скрапер - полная хуйня! эта параша даже стабсов не имеет, просто блядь позорище

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

селениум - ЛЮТЕЙШЕЕ ПАСКУДСТВО С УЛЬТРАУЕБИЩНОЙ ДОКОЙ я проибал литералли 3 часа на хуйне с подключением профайла

плрваврайт - уебищное название, но топовая тулза от мелкософта, вторая топовая вещь после вскода, сука там охуенно просто все, все для людей блядь, есть темная тема, а не убожество как у нихуя не прекрасного супа. топовая дока ГДЕ БЛЯДЬ ОТДЕЛЬНОЙ СНОСКОЙ ОПИСАЛИ КЕЙС НА КОТОРЫЙ Я ВЪЕБАЛ ТРИ ЧАСА сукааааа, и это мелкософт, который кормит спермоглотов пиксельхантинг игрой из 95 года, каждый раз когда ты ресайзишь окощько

суп в итоге я даже не пробовал, я опять вижу ублюдскую доку которую можно не читать нахуй по причине её пидорастии

все во что мы так верили - оказалось обманом анончик, крепись и жри говно, таков путь.

>>48967
пчарм для даунов, ставь вскод.
336 2349063
Посоветуйте плз, как лучше сделать, что я хочу. Ну и вообще, хорошо ли я придумал.

В общем, я использую дрф, у меня есть на странице набор постов пользователей, к которым можно ставить лайки и дизлайки. И соответственно у кажного поста будет счетчик того и другого. У меня есть модель поста и модель реакции, которая состоит из поля, ссылающегося на автора лайка/дизлайка, поля, ссылающегося на пост, к которому поставлен лайк/дизлайк, и булева поля реакции, типа если тру, то значит лайк, если фолс, то дизлайк. Но ещё я решил добавить в модель поста числовое поле с количеством лайков и такое же поле с дизлайками. Просто я подумал, что наверное делать запросы, считающие все лайки и дизлайки для каждого поста в таблице реакций, каждый раз, когда кто-то просто заходит на страницу с постами, это типа слишком, и поэтому подумал, что буду просто делать такой запрос, когда кто-то ставит реакцию и записывать число в соответствующее поле в таблице поста. Таким образом, когда будет просто выводиться список постов, то считать лайки не надо будет, а когда их количество будет меняться, то тогда и буду считать и записывать результат в таблицу поста. Я правильно думаю?

Ну и вот. Если эта схема норм, то тогда вопрос, куда мне писать логику, которая будет считать все лайки/дизлайки, при создании нового лайка/дизлайка? То есть у меня будет наверное CreateAPIView, создающий запись в модели реакций. И я хочу, чтобы после создания записи, он ещё сделал запрос, считающий все лайки/дизлайки для поста и записывал их в соответствующее поле таблицы поста. Я просто как-то не могу понять, какие там методы в каком порядке вызываются, когда активируется CreateAPIView. В perform_create это сделать? Или вообще как-то иначе?
337 2349068
>>49063

> дрф


хуита убогая, об этом пишут все джангодауны, не жри говно, а ставь фастапи с вью

сейчас память хуй купишь, а джангопарашное уебище оверфлудед говном ебаным юзлесовым, поэтому жрет раму как не в себя

забей хуй.
338 2349069
>>49068
Ну я хочу когда-нибудь на работу устроиться и делаю этот проектик как бы для изучения и демонстрации в будущем. А вроде бы для дрф побольше вакансий типа. На фронте вью использую, да.
339 2349084
Ананасы, подскажите, вот есть у меня простые объекты, которые спокойно сериализуются в JSON и возвращаются, а как быть правильно с объектами, имеющими ForeignKey?

class User(model.Model):
__nickname = model.CharField(...)

class Message(model.Model):
__caption = model.CharField(...)
__user = model.ForeignKey(User, ...)

Мне нужно получить Json объекта Message в виде
{
__'caption' : 'value0'
__'user': {
____'nickname' : 'value1'
__}
}
340 2349097
>>49084
Ну если это рест фреймворк, то тебе нужно в сериализаторе сообщения присвоить переменной user сериализатор юзера.
Типа:
class UserSerializer(serializers.ModelSerializer):
__class Meta:
____model = User
____fields = ['nickname', ...]

class MessageSerializer(serializers.ModelSerializer):
__user = UserSerializer()
__class Meta:
____model = Message
____fields = ['caption', 'user']

Но если тебе только один никнейм нужен и он у тебя выводится в __str__ методе модели User, то можно так, без отдельного сериализатора юзера:

class MessageSerializer(serializers.ModelSerializer):
__user = serializers.StringRelatedField()
__class Meta:
____model = Message
____fields = ['caption', 'user']
341 2349105
>>49097
Блин, забыл написать. Фреймворк - джанго.
342 2349109
>>49097
Ну, в общем, смысл понятен, спасибо. А насколько хуевая идея делать какой нибудь метод внутри самого объекта, который будет просто возвращать нужный dict?
343 2349110
>>49105
Ну так рест фреймворк - это тоже джанго. Как раз и придумали чтоб жсоны из моделей делать и наоборот.
344 2349115
>>49109
Если у тебя джанга то и используй джангу, а не хуярь велики

Если самопписное говно то делай метод to_dict в модели и он будет возвращать словарь
345 2349158
>>49115
Все, разобрался, теперь все работает. Спасибо

>не хуярь велики


Я пока еще студентота, это привычка
346 2349167
>>49069

> вроде бы


sad butt thrue =/ но ситуация в принципе безрадужная, осваивай лучше профессию сварщика ;)

если у тебя есть амбиции, и ты хочешь работать не за столом из опилок в убогом офисе, то советую пользоваться топчиком.

> На фронте вью использую, да


крассавчик!

>>49109
все так делают
2022-05-03x12:11:57.jpg297 Кб, 1829x890
347 2349190
такие дела
348 2349195
>>48972
а я понял я тупой, я удалил закоментированные массивы и все стало быстро как раньше
>>49016
Посоветуй не для даунов
2022-05-03x12:17:35.jpg287 Кб, 1652x1049
349 2349197
все я ушел настраивать панду, так дальше жить нельзя блядь..

>>49195

> Посоветуй не для даунов


а ты не очень умный если честно...
350 2349202
>>49197

>а ты не очень умный если честно...


Так и есть, я так понял у тебя вижул бэйсик студио ммм, вот это то не для даунов?
351 2349211
>>49208 (Del)

> btw


иди нахуй

я вижу, поэтому и написал, хочешь работать в обоссаном офисе с армстроногом, вперед и с песней ебать убогую флудед жангу, томика луца не забудь перечитать, ага сука)

> да еще


душная пиздорылая лягушка иди нахуй. фастапи топчик, ноудискас.
352 2349259
Тебя забыл спросить что "топчик", а что нет. Возвращайся откуда вылез
1.png29 Кб, 855x421
353 2349382
Мне нужно периодически читать показания с датчика и отправлять их на сервер. При этом требуется сделать так, чтобы при отсутствии интернета данные не терялись, а сохранялись и отправлялись при возобновлении соединения.
Написал вот как-то так. Данные с датчика сохраняются в список, который и отправляю. Если сервер ответил "200", то список очищаю. Это будет работать? Не будет ли тут случая когда данные отправятся повторно, если например сработает таймаут, на самом деле отправив данные?
Если такая ошибка есть, то как это устранить? Проверять на стороне сервера?
Я не программист, если что не так.
354 2349386
>>49382
1. Проверяй в бесконечном цикле который ждет через time.sleep, треды тут ни к чему
2. Добавь мониторинг, в случае ошибки логи должны быть
3. В принципе такой вариант валиден, но данные в теории могут всер авно продублироваться, чтобы это отловить отправляй timestamp внутри каждого показания счетчика
2022-05-03x16:25:19.jpg24 Кб, 881x177
355 2349396
>>49382

> Я не программист, если что не так.


дауна выше не слушай, бесконечный луп хуита, а реализуй логику експешона, пасс это тоже хуета, делай там стак и ебашь рекурсию (я так делал (только без стака))
356 2349422
>>49396

>бесконечный луп хуита


Даун, у тебя асинхронный ивент луп работает на том же бесконечном цикле. И большинство скриптов-демонов работают точно так же блять.

В идеале ему конечно тоже стоит создать своего демона, который работал бы через supervisor например если на unix. Ну или на худой конец свое самописное решение через os.fork
357 2349425
Эта мелкобуква из воркача сбежала кстати.
358 2349436
>>49422
ладно, я погорячился, просто тригернулся на в целом уебанский подход

тут должен быть вочер за сетью, с колбеком на случай разрыва

ос тоже хуета, либо паслиб либо что то другое, не знают просто бесит, всегда там говно какое то

>>49425
я истинный оп питонотреда https://sites.google.com/view/pypry/

а ты никчемный нюфаг - нука брысь нахуй шваль
2.png153 Кб, 1360x1169
359 2349457
>>49436
Вот так в итоге оставлю, как-то работает, наверное сойдет. Только нужно еще что-то придумать со сбрасыванием часов при выключении питания. Оно конечно через NTP получает время, но не сразу.
Лог пишу в stderr, systemd может оттуда брать. На счет лога опасался что он все место забьет при возникновении ошибок, но прикинул и вроде бы нормально, нужно только проверить настройки logrotate.

>в целом уебанский подход


Может и так, я не претендую на звание программиста.

>тут должен быть вочер за сетью, с колбеком на случай разрыва


Но что оно улучшит? Поможет предотвратить какие-то нежелательные последствия сбоев? Но даже если все напрочь сломается, то systemd перезапустит.
360 2349476
https://yurecnt.ru/files/books/43hhsdjgo0mud4djzg2zveo1pnzc1o.pdf
Вот кстати про поднятие демона от Бизли (стр 524). Хуячит через fork и while True, но в общем если ты новичок в пистоне и юниксе, то можно так не заябываться
361 2349505
>>49476

>Вот кстати про поднятие демона от Бизли (стр 524).


Это для старых инитов. Сомневаюсь что на это стоит оглядываться при использовании systemd.
362 2349506
преисполнился пандой, прям топчик, есть ебанутые моменты, но в целом ня

>>49457
эксепшоны по красоте расписал, чотко!
363 2349514
Аноны, стоит ли начинать учиться с нуля на сайте Питонтьютор?
364 2349516
>>49514
С нуля надо не питон учить, а базу.
365 2349522
>>49516
BASED
366 2349541
ребзя подскажите, не знаю даже как загуглить -
мне нужно получить событие, в винде звук. Как зафиксировать, что на каком-то звуковом устройстве появился звук?
367 2349543
>>49541
sounddevice
368 2349544
>>49514

> стоит


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

>>49516
безмозглый даун только используя инструмент для решения своих задач можно не дропнуть через две недели.стоит

>>49541

> винде


никак. спермоглотам неположено. индусос закрытая помойка для унтерменшей, это не Операционная Система для Пользователя ( как Arch Linux ) в привычном понимании.
2022-05-03x22:48:42.jpg302 Кб, 3044x1043
369 2349627
чето панда подбешивает...
370 2349634
фильтра дату попортили, отключил все нормой стало

конечно такая неявная сортировка это пиздец и залет прям явный ууу
371 2349637
>>49634
Хуй сосешь?
373 2349666
Это снова я >>49063

В общем, я тут ещё подумал, что надо ведь как-то отображать, что текущий пользователь уже лайкнул какой-то пост. Как это лучше сделать? Весь день ебался, пытаясь как-то добавить в сериализатор, выводящий список постов, ещё информацию о том, лайкнул его пользователь или нет. Но не смог в общем. Типа мне бы пришлось для каждого поста на странице делать запрос к бд и смотреть, нет ли там лайка от текущего юзера.

Я тут подумал. А может просто при логине делать запрос к бд и сохранять в localStorage какой-нибудь список всех оцененных постов? Норм идея? И дальше там добавлять/изменять эту информацию при новых лайках.

Не знаете, как такая штука везде реализуется?
374 2349742
Посоны, прохожу сейчас курс по питону от работы, чёт нихуя не успеваю порешать контрольные. Сколько примерно будет стоить сделать и где можно заказ разместить? Программировать в будущем в общем-то не планирую, просто нужен перк в виде технического ДПО от московского технического ВУЗа к моему нетехническому мухосранскому в/о.
375 2349769
>>49742
3-10k₽ час
376 2349774
>>49666

> Норм идея?


Если ты от скуки маешься, то пойдешь, но вообще, конечно, хуита. На любой запрос сервак может отвалиться, значит клиенту нужно сперва ждать подтверждения двухсотки. А если юзер закроет таб до подтверждения? Делать полноценный двухфазный коммит? Ну это перебор немного для такой задачи. Забить на консистентность? Лучше уж базу дрочить на каждый запрос поста. Если индексы есть, то джойн быстро отработает, не страдай хуйней.

> Не знаете, как такая штука везде реализуется?


Б-дерево на диске по паре id поста и юзера в качестве ключа да https://en.wikipedia.org/wiki/Bloom_filter в RAM поверх него.
377 2349816
>>49774
Ну не очень понял, в чем проблема. Я это планирую использовать для того чтобы фронт понимал, что ему при нажатии на кнопку надо не пост запрос на создание лайка послать, а делит на удаление лайка. Но даже если че-то там не загрузится, то я все равно в бд поставил констрейнт на то чтобы у одного юзера для одного поста могла быть только одна запись, поэтому ну типа не сработает энивей. Ошибку какую-нибудь покажу, что типа вы уже лайкали.
378 2349831
>>49742
@krsq04
Кидай, посмотрю. Если смогу решить, то за недорога.
379 2349841
>>49774
>>49816
Ну и я прост ещё недопер, как это сделать по-другому, лел. Вот у меня 100 постов на странице например. И че мне для всех загружать все лайки вообще каждый раз когда кто-то просто на страницу заходит? Ну это же точно не умно? Я придумал, что при лайке буду считать количество всех лайков для лайкнутого поста и записывать это прям в таблицу поста. То есть когда кто-то лайкает, создается запись в таблице лайков, происходит count запрос для количества лайков к этому посту, это количество записывается в таблицу поста в поле "лайки". Таким образом, когда кто-то просто заходит на страницу, считать лайки для поста не надо будет, а просто вывести число. Но вот тогда не понятно, кто эти лайки делал конечно. Поэтому я придумал ту штуку с запрашиванием всех лайков юзера. Ну энивей это же лучше, чем каждый раз все посты на странице проверять, да?
380 2349843
Пытаюсь вникнуть во фронт на реакте. Он у меня как независимое приложение. Вопрос в том, как посылать запросы на бек, это вручную URL'ы хардкордить нужно, или есть какой то способ синхронизировать?
381 2349844
>>49841
Сделай аннотацию
382 2349862
>>49841
твои шизопростыни не читаю (потому что типовые задачи, но ты отчаенно ебешь голову и отказываешься гуглить сука)

лайк эмаунт грузится вместе с постом

при наведении догружаются лайкуны

хуле так сложно? жалко запросы сделай кеш блядь
383 2349918
>>49843
Что именно ты там хардкодить собрался? Пути относительные указывай
image.png149 Кб, 1031x736
384 2349923
>>49476
На 521 кстати годная тема
385 2349926
Плохо знаю python, подскажите что означает эта конструкция в классе def __init__(dict):
386 2349938
>>49926
Что делать когда создаётся
387 2349940
>>49938
Ну я понял что это конструктор, я имел ввиду та часть что в скобках, (dict), что это? Это наследование от словаря или что?
388 2349942
>>49940
Это название параметра, но перед должен быть self. Стало быть, раз его нет, згачит он вместо self
389 2349947
Нипонял, зачем я должен явно указывать bufsize (число) когда вызываю recv у сокета? Если bufsize будет слишком мал то я не вытащу все данные оттуда, как сделать так чтоб гарантированно вытащить из него все? Указать ебанутое огромное число?

putsocket, getsocket = socket.socketpair()
putsocket.send(b'xyz')
result = getsocket.recv(1)
print(result) # x
390 2349949
>>49947
Думаешь, для обычных запросов в хедере просто так указывается размер сообщения?
391 2349951
>>49947
такова история программирования, сынок.
так выглядело api berkley sockets в языке BSD.
https://ru.wikipedia.org/wiki/Сокеты_Беркли

Зачем ты спрашиваешь "зачем?".
392 2349954
>>49918
Ну что бы джсоны по апи дергать. За относительный путь я понял, спасибо
393 2349955
>>49949
А если я использую 2 сокета внутри моего приложения, чтобы по ним обмениваться данными? Где там хедер? Это ж даже не протокол TCP/IP
394 2349957
>>49947
Очевидно что можно было бы попытаться прочитать из сокета все что там есть через цикл а потом выйти из него, когда последовательность закончится. НО:

1. Когда в сокете ничего нет и мы вызываем recv, он падла блокируется и ждет появления байт (которые не придут), не возвращает никаких None
2. Это можно решить передавая в конце определенный символ который бы означал окончание последовательности и по нему выходить из цикла, но выглядит как-то по-уебански. Как заставить recv не блокироваться?
395 2349975
>>49844
О, ну это вроде поможет, спс почитаю. Типа получается одним запросом посчитаю, сколько у каждого поста лайков. Ну или не одним, хз.

>>49862
Да в гугле чет все слишком сложно все это реализуют и по-разному, я нипанимаю. Я бы в принципе мог сделать чтоб оно работало, но вот мне кажется всё, что я неправильно делаю наверное. Хочется чтоб я сделал запрос типа GET /posts/ и хуяк он мне жсон со всей информацией которую надо отрендерить. Ну вроде вот аннотация то, что нужно. Но с лайками для юзера ещё подумать надо будет. Ну я уже сделал почти как я говорил с сохранением в сессию типа. Посмотрю/. как будет работать.
396 2349987
Как по простому перевести словарь в string чтобы каждое имя с ключом было на новой строке?
398 2350007
>>49987
./n.join()
399 2350086
Аноны, как вы передаете значения одной функции в качестве аргумента другой функции и почему?

https://pastebin.com/MHhEQjZq ну или ваш вариант.
3xt0cbg53qf11.jpg40 Кб, 425x340
400 2350088
401 2350099
>>50086
Там только два варианта это сделать. Использую оба, когда как
402 2350100
>>50088
>>50099
Я собственно и спросил - почему вы используете тот или иной вариант? Или иначе говоря, в каких случаях какой?
403 2350103
>>50100
Если результат первой функции не используется где-то еще, а ее вызов не вылезает за пределы длины строки, то все делаю в агрументах
2022-05-04x17:13:57.jpg41 Кб, 1178x293
404 2350105
>>50100
один императивный, второй декларативный, use wisely yopta
405 2350111
>>50100
Если значение параметра больше нигде не используется, то сразу внутри, очевидно, не в ущерб читаемости конечно
406 2350130
>>50111
А таком случае параметры записываю в новые строки, если их больше одного.
407 2350140
Привет, педики.
Какой петпроджект можно накатать на чистом петоне?
Микросервис может какой.
408 2350142
>>50140
дахуф уже наскиллованный стал?
409 2350161
>>38156 (OP)
Антон, решил я наконец вкотится в погромирование.
Что скажешь про курсы от Яндекса?
https://practicum.yandex.ru/backend-developer/

В конце концов, это же в их интересах подготовить максимум качественных рабов за еду, которые задемпингуют профессию в говно. Обещают профессионалов - преподавателей, и актуальные знания в курсе. С 75% скидкой от госуслуг стоить будет копейки.

Кто-нибудь проходил?
410 2350170
Есть тут невкатыши, которые делали стереокамеру на OpenCV и сетевых камерах? Есть охуенные вопросы касательно калибровки. Карта глубины нихера не формируется нормально
2022-05-04x18:51:52.jpg240 Кб, 1814x1154
411 2350175
>>50170

> Карта глубины нихера не формируется нормально


потому что у тебя руки из сраки

графон ирл нихуя не робастный, ты должен все сделать правильно

ты блядь гуглил вообще?
412 2350186
>>50175
Да, RMS по камерам на уровне 0.06 и ниже, а RMS от stereoCalibrate ниже 2 не опускал, еще и stereoRectify выдает хуевые матрицы
2х AXIS 3204

Разница есть, будет это камера через модуль для стереорежима или две сетевые?

использую SGBM с GUI. Покрасил в RGB и полная хуита выходит, часть дальних предметов покрашены красным
413 2350189
>>50161

>В конце концов, это же в их интересах подготовить максимум качественных рабов за еду


На самом деле яндекс состоит из кучи разных подразделений со своими целями. Конкретно у практикума цель собрать больше всего бабла с вкатышей
но я пойду сам туда за дипломом о доп образовании
414 2350201
>>49947

>Если bufsize будет слишком мал то я не вытащу все данные оттуда, как сделать так чтоб гарантированно вытащить из него все? Указать ебанутое огромное число?


Значение recv ограничивает сверху, это чтобы не не подавился тем объёмом данных, который пришёл. Особенно актуально для низкоуровневых ЯП, где надо память самому выделять.

При этом функция тебе может вернуть пакет не целый, я часть. Например если ты пошлёшь сразу 10 килобайт через полноценную сеть, то на выходе получишь блоки примерно 1500 байт, чуть меньше, типа 1492, не помню сколько.

Это потому что данные идут в TCP, разбиваются на IP пакеты, каждый из которых около полутора килобайт вместе с заголовком.

У тебя единственный вариант в том, чтобы накапливать данные в буфере, пока ты не соберёшь пакет целиком. А как определять, когда пакет собрался, это уже твоя работа, или ты сначала высылаешь размер пакета, а потом сами данные, или ждёшь специальный байт или комбинацию, которая показывает, что пакет собран.
415 2350203
>>49957

>2. Это можно решить передавая в конце определенный символ который бы означал окончание последовательности и по нему выходить из цикла, но выглядит как-то по-уебански. Как заставить recv не блокироваться?


Лучше всего начать изучать асинхронное программирование.
416 2350206
>>50203
Ебло, как асинхронка соотносится с низкоуровневым междусокетным взаимодействием?
417 2350211
>>50206
Так, что это самое основное предназначение асинхронки и работать с сетью удобнее всего именно через неё.

Смотри на асинкио-протоколы и loop.create_connection / create_server
418 2350213
>>50211
Я в курсе про asyncio. Я юзал легковесное соединение по паре сокетов для оперативной передачи данных внутри самого приложения, хз насколько целесообразно юзать create_server для этого. Кстати сокеты можно обвязать асинхронкой но это делается костылями через Future:
https://stackoverflow.com/questions/48248567/how-to-await-a-select-select-call-in-python-asyncio
419 2350217
>>50189
Я сильно сомневаюсь, что основной целью яндекса было делать на этом деньги. В конце концов, тот же курс на питоне прошло только 800 человек. Едва ли это огромные по меркам яндекса бабки.

А вот эффект от демпинга на рынке для них будет просто заебись.
420 2350218
>>50213
Я сам работал на втором питоне с сокетами и селектами, но это извращение.

Если прямо хочется обычный сокет и не хочется асинхронки, мало ли почему, то сокеты поддерживают работу без блокировки-таймауты. Не помню, использовал ли когда-нибудь, я уже сто лет только через asyncio в питоне с сетью работаю и не понимаю, почему не работать.

С обычными сокетами больше магии, все эти bind/accept и не помню уж чего там ещё. Всё равно придётся асинкио изучать, если в сети хочешь лезть.
421 2350222
>>50217
Я сомневаюсь, что вот из этих 800 человек хотя бы половина на что-то реально способна на выходе. А и без курсов масса тех, кто программирование осваивает, самостоятельно, намного больше. Особенно студни всякой.

Я думаю, они просто осваивают рынок онлайн-образования, за котором большое будущее. Есть питон курсы, есть курсы по другим языкам и технологиям, есть не по программированию вообще.

Сейчас небольшой рынок, потом будет огромный. Это одно из самых перспективных направлений.

Я бы тут в целом больше доверял яндексу, чем другим. Всё-таки они рынок нарабатывают, а не за копейками охотятся, как многие мелкие шарашки.
422 2350224
>>50217

>А вот эффект от демпинга на рынке для них будет просто заебись.


Кстати яндексам меньше всего нужен демпинг на рынке. Они в силу масштабов намного легче могут платить, чем другие.

Демпинг как раз для них опасен, потому что выше риски появления конкурентов, которые при высоких зарплатах не тянут инвестиции.
423 2350227
>>50213

>Я юзал легковесное соединение по паре сокетов для оперативной передачи данных внутри самого приложения, хз насколько целесообразно юзать create_server для этого


Вот это совсем не понятно. А зачем так сложно? Если внутри процесса одного? Не проще ли тупо через обычные очереди, queue?
424 2350239
>>50186

> stereoRectify выдает хуевые матрицы


и хуле ты хочешь?

> Разница


в душе не ибу, но логика должна подсказать тебе что при грамотном сетапе ты ботлнекнешься об уебищную матрицу

у меня с опенсв до сих пор срачло подгорает, если работать с анивен датой, то это ебанная свистопляска, в итоге только нейросеть смогла выдать результат без ебли и составлении охуевшей индусской карты с параметрами на любой чих

> SGBM с GUI


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

советую поставить репку с гитхаба, там бывают годные обновки, я там нашел алгоритм который добавил китаец, так что буквально через три месяца он меня дичайше выручил

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

>>50206
лол, ебать дебил

>>50213

> Future


тогда и в жсговне промисы это костыль, идиот ебанный...
2022-05-04x20:49:13.jpg286 Кб, 2332x1054
425 2350244
отпало
426 2350252
ты хоть стрим постпроцессишь фильтрами?

накидай фоточек то

а вообще лучше не иби голову, один хуй хуйня получится юзабельная только на каком нибудь залитом светом светом конвейере
427 2350311
>>50217

>А вот эффект от демпинга на рынке для них будет просто заебись.


Для этого у них ШАД есть, где средний чел хуй пройдет вступительнные без мат подготовки, а в практиктикум любого человека с улицы возьмут и протащат
428 2350322
Создал функцию которая скачивает файл и возвращает его в качестве объекта для дальнейшего использования, в случае возникновения ошибки что должна делать функция, выбрасывать ошибку или возвращать пустой объект? Как это вообще положено делать, есть ли какие-нибудь стандарты? Можете подсказать?
429 2350333
>>50322

>возвращать пустой объект


Это c/go way. По логике надо бросать исключение.
430 2350334
>>50322
Скачивать файл в виде обьекта идея не очень. Лучше сделай генератор по файлу и пользуйся им, если он лежит локально, ну либо как-нибудь ещё.
Делпй через try except и там делай что хочешь, ошибку надо обрабатывать, а не показывать. Ну, показывать в консоли надо, но главное сделать, что-то, например, выкинуть None или что там у тебя по сценарию надо
431 2350337
>>50334
Это я к чему, представь что у тебя файл весом в охрениллион. Ты ж не будешь его в оперативку грузить, правильно?
432 2350425
>>50337
Мне кажется он другое имел в виду, что не в виде данных файл отдаётся, а в виде хендлера с открытым файлом. Хотя хз что он имел в виду.

Тут сложно идеальное решение предложить, если ты файл сразу сохраняешь, то надо сразу как-то придумывать, куда его в файловой системе сохранить, какое имя дать, может вообще его не нужно сохранять и т.п.

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

Без внятного ТЗ я бы не рискнул варианты предлагать вообще.
Clipboard01.jpg40 Кб, 921x303
433 2350458
>>49862
Пездос, всю ночь не спал, таки смог впердолить всё это в один запрос.
2022-05-05x09:23:36.jpg78 Кб, 582x1437
434 2350467
>>50458
крассава

а теперь переделывай ;)

ну или хуй забей если даты не много
какая же джанга уебищная пиздец просто, кстати вся функциональщина типа map filter и тд и тп медленнее [лист компов]
435 2350468
>>50161

>В конце концов, это же в их интересах подготовить максимум качественных рабов за еду, которые задемпингуют профессию в говно.


Для этого есть студенты.
436 2350470
>>50322
Это уже зависит от бизнес-логики. Ифы с возвратом None "проще", но при разрастании кодовой базы эти условные возвраты засирают логику, особенно у чистых функций.
Тут тебе надо подумать, какие ошибки ты можешь обработать в контексте этой функции и обрабатывать только их в том случае, если можешь вернуть результат без изменения сигнатуры функции. А всё остальное должно прокидываться дальше.
437 2350538
>>49769
ебать хули так дорого? я сам блядь решу лучше чем столько платить, я столько не зарабатываю
438 2350540
>>50470

>бизнес-логики


ты дохуя бизнесмен?
изображение.png88 Кб, 569x709
439 2350548
>>48974
Да нужно чтобы поток сам стучался в главный поток, а не чтобы из главного join вызывался.
Вот примерно такой же код с таким же выводом, только существенно чтобы функция prn была async и вызывалась в главном потоке после сообщения от threading.Thread

Впрочем, можно уже забить, я сделал все без asyncio.
440 2350581
>>50540
Бизнес-логика - в первую очередь формальное описание алгоритма, а не то, что тебе кабанчик там намямлил на полудневном грумминге. Вот формальное описание и описывает, должны ли ошибки ронять рантайм или втихую глушиться.
441 2350583
>>50239
Гуглежку вывожу, ебаный OpenCV-Python выдает хуиту, ошибешься с параметрами и получишь месиво.

Так смысл не нейронкой делать. Надо понять можно ли без OAK-D обойтись или RealSense, потому что уже хер купишь.

В принципе есть платы StereoPi, но CM4 только едет из Китая

Матрица камер 1МП, но они же еще с автоподстройко что меня и смущает, так как все примеры на дешевых вебкамерах или же pinhole.

Короче карта как бы есть, но видно, что нет наложения по оси X, тут и гугол не поможет если я проебался. Буду дальше читать доки OpenCV, спасибо
442 2350601
В чём отличия использования async от threading?
443 2350604
>>50601
Если я тебя буду ебать в рот или в анус разница будет?
2022-05-05x13:31:11.jpg8 Кб, 384x68
444 2350606
>>50583

> Гуглежку вывожу


не обманывай

> ошибешься с параметрами и получишь месиво


как и везде и всегда

> хер купишь


я тебе картинку с алика приложил

> 1МП


это разрешение не зли меня тупостью

давай удачи, в следующий раз приходи с картинками, у нас ведь компьютерное зрение а не хуй собаки, ю ноу?

>>50601

> async от threading


вопрос некорректный
445 2350608
>>50606
Ну к примеру, можно написать async функцию и вызывать через await, а можно создать thread и использовать обычную функцию. В чём разница между ними кроме специфичного синтаксиса для первого?
446 2350610
>>50608

> вызывать через await


ты можешь только корутину, а не блокинг хуйню (ну по факту тебе никто не запрещает, но смысла и пользы ноль)

твой вопрос ГУГЛУ должен был быть - в чем отличие мультитрединга от мультипроцессинга, потому как асинк авейт просто сахар
447 2350612
>>50610
Я понимаю в чём отличие между ними. Просто я хочу понять, зачем существует async await, если через threading сделать гораздо проще.
448 2350615
>>50612

>проще


Анус ставишь?
449 2350643
>>50612

> через threading сделать гораздо проще


показывай
450 2350647
>>50643
t = Thread()
t.start()
...
t.join()

Внутри можно делать блокирующие вызовы. А в async нет
452 2350655
>>50654

> ThreadPoolExecutor


Ясно. Никак
453 2350665
>>50655
Блять, ты понимаешь вообще что такое "блокирующий"/"неблокирующий"? Ты же понимаешь бля что cpu-bound задачи не выполняются быстрее, если ты их в манятред засунешь?
454 2350668
>>50581
просек фишку, мы на коливинге такое обсуждали
какая разница шорт.mp468 Кб, mp4,
480x282, 0:01
455 2350669
2022-05-05x15:23:59.jpg450 Кб, 3440x1440
456 2350672
>>50647
ты не разбираешься в вопросе, но уже зачем то лезешь спорить, ты ебливый дрочер без задач. не пиши мне больше.

>>50654
если видишь как кто то эксплиситли указывает количество воркеров ThreadPoolExecutor(max_workers=5) то значит перед тобой пиздорылый даун

тоже самое можно сказать про мануальное открытие лупа - додики жрут протухшее говно
2022-05-05x15:31:04.jpg71 Кб, 1163x498
457 2350676
быстрофикс разметки
458 2350679
>>50672
Разницы между методами loop и asyncio.to_thread - никакой
хотя нет, есть, с последним можно повыебываться и набить себе цену, якобы ты ниибацо в тренде
459 2350685
>>50672
Ты - сын спидозной шалавы. Я задал вопрос в чём их отличие. Не можешь ответить по существу - завали ебальник
460 2350778
>>50239
Ну чот хуита снова

https://imgur.com/a/q4Lo26y - фото
https://pastebin.com/FCzcf1eZ - код

Вот что мой код высрал

Калибровка стерео режима
0.4987280024608082 левая
0.453676328043347 правая
RMS 1.6204857856812112 калибровка стерео

Еще снова получаю заваленный горизонт почему-то. Если взять флаг USE_INTRISIC_GUESS, то remap приближает изображение, а нужно сохранить пропорции. Беру FIX_INTRISIC, получае только изменение горизонта.

Если будет время глянь пожалуйста, вдруг с чем-то уже таким возился.
461 2350785
>>50252
SGBM уже сглаживание делает. Фишка в том что не выходит нормальной цветовой дифференциации.

У меня все равно бэкграунд светлее предметов впереди или посередине. В итоге окрашенная карта это просто световое пятно
462 2350789
>>50252
>>50239
Но есть впечатление, что все это херня, так как нигде не видел вариантов с использованием сетевых камер. Либо намного проще варианты, либо stereoPi/Arducam.
Я не могу поверить, что платы для стереокамер это серебряная пуля
463 2350803
>>50778
- не используй русские менты
- не используй os
- не используй такую охуевшую экстракцию

упрости сцену и код до максимума, тупо белый фон и одна книга, потом добавь вторую и все это с хорошим мягким освещением

если ты с этим не справишься то гг.

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

причем там цвет блядь!? ты офф доки открывал? там пример ЧБ блядь!

а сама дебс мапа это фича экстракшен (тоже самое для стабилизации юзается) и матёшка с расстояниями между камер и до фич - ВСЁ блядь ну просто элементарная хуета

ближайшее с чем я сталкивался это crop visible и ротейт в горизонт по найденной доминанте

ну и фича матчинг и вообще все алгосы по фичам, но под мои дела они не подошли, поэтому не пушил далеко
464 2350805

> менты


каменты

> калибровки


прошивки с параметрами
465 2350809
>>50803
Почему ЧБ, если 16 бит grayscale?

>камерах кроме зашитого


Именно, а эти AXIS по кило каждая, я еле их выставил хоть как-то. Еще и поворотный механизм для объектива. Там все в движении считай и это мешает выставить по Y нормально, так как для disparity map хорошие условия это сдвиг только по X иначе будет то что у меня выходит, это я еще с линейкой выставлял.
466 2350818
>>50809

> 16 бит grayscale


нахуй ты душнишь ебать?

если речь идет за чистое чб, то оно называется БАЙНАРИ и даже плотается в специальной цветовой гамме

> мешает выставить по Y нормально


только твоя лень и тупость, недающая скачать уровень, сука тебе даже в строительный магазин для этого не надо идти, ууууу зумеры пиздец..
467 2350898
>>50818
О, key1
468 2350900
>>50898
Хотя нет, это же key2
469 2350987
рейт нейминга и архитектуры
470 2350990

> блед импорты забыл отсортировать..

472 2351036
Какой монго драйвер быстрее? Стандартный pymongo или есть получше?
Использую mongoengine, хотелось бы что-нибудь проще и современней
473 2351064
Хай. Подогнали корпоративную скидку в 70% на курсы skillbox. Тск вот есть смысл тратиться на это говно? Читал много негатива от работодатей, что выпускают оттуда дебилов. Есть у кого реальные примеры, может кто-то сам проходил. Стоит оно того или реально шляпа
474 2351065
>>51064
В добавление. Знания у меня прям базовые. Сейчас в работе испольщую пайтон для запросов rest api с последующим парсингом(json/re) и выводом данных или последующий прогон через другие реквесты
475 2351167
>>51130 (Del)
Шитпостер
476 2351190
>>51167
бан
477 2351210
Собираюсь вкатиться в питон, выбор пал на курсы от яндекс практикума + сам буду углубленно учить
в чем я не прав?
478 2351223
>>51210
в том что ты заплатишь больше 150к за то что можно бесплатно посмотреть на ютюбе
479 2351226
>>51210
Если так удобно - делай
480 2351229
>>51210
Лучше на Степике начни. 2 курса на Степике по синтаксису покрывают первую ступень Яндекс практикума. И скорее всего покрывают материал более подробно.
481 2351241
А чему там на курсах учат? Чтоб погромироваиь надо знать базу, что такое методы, как устроена память и пр. Потом сам язык, но это из доков лучше узнавать.
Едиственное стоящее, это паттерны проектирования, дизайн проекта, как устроена логика работы, ормки, валидаторы, их сочетание, варианты реализации тех или иных механизмов приложений и пр, на реальных примерах, а не обзорных. Вот этого не хватает в гугле. Это есть на курсах?
482 2351244
>>51223
у меня знаний 0, я хочу плавно вкатиться подкрепляя сверху самообразованием, если пойму что курс уже ничего не дает то просто ливну
483 2351245
>>51242 (Del)
Не понимаю тех кто везде асинки суёт
484 2351256
>>51241
Чел, на работу устраиваются реакто-дебилы, которые не знают даже примерно откуда и как странички в браузер загружаются.
485 2351272
>>51241

> надо знать базу


нет

переменная - это такая коробочка.. -- и поебашил, смотришь на выдачу и ебашишь дальше - ВСЁ СУКА

> паттерны проектирования, дизайн проекта, как устроена логика работы, ормки, валидаторы, их сочетание,


тикетной крысе не понадобятся до конца жизни

>>51242 (Del)
лягушка глупая я уже весь тред картинками засрал что мне даже немного неловко

>>51244

> плавно


додь ты плавно видосы на ютубе не можешь включить или чо ебать?

>>51245

> везде


не надо, а там где надо идет буст х15
486 2351274
>>51272
Тикетная макака как раз "переменная коробочка и ебашишь дальше" которая всегда делает говнокод, а к пониманию приходит только с опытом, но стоит ему начать писать что-то новое - будет говнокод. Потому что он не понимает как это всё работает. База в моём понимании это не зубрежка типовых алгоритмов, а умение их самому создавать.
2022-05-06x15:05:01.jpg326 Кб, 2255x1480
487 2351275
и еще такая есть :э
488 2351279
>>51035 (Del)

>Мнения


Ты дебил, если не можешь решить за О(1).
489 2351281
>>51274
манямир
490 2351284
>>51245
А че бы и нет? По сути все операции I/O, если нужны просчеты, ну тогда да отдельно Process. Ебучий питон же не умеет в нативную многоядерность.
491 2351285
>>51274

>Тикетная макака как раз "переменная коробочка и ебашишь дальше"


Для 99.9% процентов задач этого достаточно, что-то больше нужно только если ты пердолишь кишочки как инстаграм делал
492 2351286
>>51275
Где autodoc? Типизацию сделал, автодоки нет. Смысл тогда?
493 2351288
>>51286

> Смысл


в том что дока для пидоров, никто эту простыню унылую не читает и хуй в ней разберешься энивей

берешь блядь сорцы, берешь вскод с нейросетевым пайлансом и ебашишь нахуй по красоте.говно
494 2351324
ну что додиковые дрочеры - ловите риал ворлд задачку:

дано:
- from fastapi_utils.tasks import repeat_every
- 03:00 АМ

задача:
сделать из репитера - шедулер
__________________________________________

тулза понимает только секунды @repeat_every(seconds=60 * 60)

а нужно производить запуск в конкретное время, внезависимости от времени деплоя и старта сервера

посмотрим решат ли книжные черви без задач задачу быстрее чем я успею примерно сообразить решение и спиздить код с СО после чая с печеньками :Р
495 2351327

> стдлиба онли бзв

496 2351332
2022-05-06x16:54:04.jpg151 Кб, 2550x659
497 2351342
>>51332
чел ну я же просил без мокрописек

хотя я уже почти готов сдаца сук пздц тварь нихочет мразота((

БАЗА бы памагла антош?)))))
498 2351348
>>51324

>задача: сделать из репитера - шедулер


Сможем объяснить - нахуя?
Для шедулера используй простой cron, если хочешь извратиться - celery, если нехуй делать - сам напиши его через create_task и asyncio.sleep
499 2351352
>>51342
Модуль не на костылях это не мокрописька, тем более ты сможешь мониторить нормально, а то сделаешь потом без возможности расширения и пиздец приехали.

Тем более там нативно aio сделали https://apscheduler.readthedocs.io/en/3.x/modules/schedulers/asyncio.html#apscheduler.schedulers.asyncio.AsyncIOScheduler

Тем более ты хочешь вне eventloop это делать.
500 2351353
Меня очень раздражает, что я нихера не могу понять, как конкретно работают класс бейзд вьюс в джанго и в джанго рест конкретно. Ну типа почему никто просто не напишет что и в каком порядке происходит при их работе. В документации одни какие-то примеры на конкретных случаях. Ну либо исходный код, который мне сложно понять. Я бы просто хотел какую-нибудь статью, где бы было тупо описание класса и его методов словами, типа вот когда происходит запрос, то сначала отрабатывает этот метод, затем этот, затем этот. А то я нихера не могу понять, что мне переопределять для конкретной задачи. Каждый раз приходится гуглить, пока не найду на стаке похожий на мой случай. Заебало уже. Мб вы знаете где-нибудь такую статью? А то я не могу никак нагуглить.
501 2351354
>>51348

> create_task и asyncio.sleep


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

или надо еще пару учебников перечитать ?

> нахуя


питоняшный принцип минимальной достаточности

ну или ладно.. я просто подумал что крон перезапускает целый модуль, а там такой же няшный декоратор -_-

но дату посчитать один хуй все же придется из принципа челенджовости ~_~
502 2351356
>>51354
Блокирующий вызов в AIO, гг чо
503 2351358
>>51353
Пчел, тут статья на хабре, пчел

https://habr.com/ru/post/568198/

джангодебилы совсем обезумели
504 2351362
>>51354

>для тебя уже нон блокинг утилиту сделали без ебли


Мелкобуква, общаться научись для начала. Ты прекрасно видел целиком мой пост и все варианты что я предложил, тем не менее решил высрать максимально невалидную хуйню.
2022-05-06x17:20:49.jpg355 Кб, 2328x1427
505 2351367
>>51356
you will never know

>>51358

> джангодебилы совсем обезумели


always has been

>>51362
я бы тебя уволил за проф не пригодность

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

так что давай пока ниасилятор..
506 2351369
>>51358
Спасибо, поизучаю. Я только рест сейчас использую, но там вроде они на основе обычных вью сделаны, как я понимаю.
507 2351371
>>51367

>я бы тебя


На очко бы ты сел бля. После того как мы с ПМом тебя бы на пару обоссали за отсутствие софт скиллов и токс.
508 2351381
>>51369
Не знаю, я разок использовал Jinja2 и Cheetah, а потом пошел учить VueJS, потому что это пиздец на Python фуллстак говнокодить.
Либо перекатывайся на JS либо дальше REST API не лезь, теперь всем занимается браузер и тут нужен нормальный фреймворк JS
2022-05-06x18:43:51.jpg189 Кб, 2268x1064
509 2351432
>>51371

> ПМ


видит как ты пытаешься скрыть свое незнание стандартных БАЗОвых модулей за васянскими поделками

которые приведут к необходимости увеличивать память и время на поддержку

а значит своим непрофессионализмом ты привел компанию к УБЫТКАМИ - а это UNACCEPTABLE !!!!

завтра последний день, собирайся.
2022-05-06x19:00:16.jpg645 Кб, 3440x1440
510 2351433
>>51381
ниасилятор. если бы не уебищные блюпринты фласка была бы идеалом

ну и еще лайв сервер у нее уебищный)) либо он просто препроцессоры не вывозит лол
511 2351438
>>51035 (Del)
Сдается мне, что какой-то уебан неправильно скопировал аргументы, и там (from, to, divisibleby, suffix1, suffix2).
Тогда пример: числа от 1 до 20, делящиеся на 4 и при этом не равные 12 и 16.
Собственно из произведений четвёрки это и будут 4,8,20,
Ну и за O(1) тоже надо бы хуем по еблу постучать, там в любом случае будет зависимость от размера диапазона и делителя, которые определят размер выходного списка.

Один шаг решета эратосфена заебашь и будет тебе счастье.
2022-05-06x19:47:46.jpg204 Кб, 2394x1179
512 2351470
финалочка!

но ебливые додики дауны которым надо поебать голову, и применить хоть куда то свои даунские бесполезные книжки которые уже совсем скоро забудутся, вместо реальной работы все еще могут подумоть почему офсет_с округляет секунды
513 2351480
>>51470
Чибо, тебя из треда тупых вопросов уже выгнали что ли? Отведай хуйца.
2022-05-06x20:55:59.jpg141 Кб, 1584x1095
514 2351531
кароче вообще все это был дроч, ведь таймер аут оф скоуп

и чтобы его задефайнить нужно городить охуевшую конструкцию из колбеков

НО ВЕДЬ Я НЕ ЗНАЮ КАК ОНО РАБОТАЕТ ПАД КАПОТАМ

поэтому не буду лезть в залупу и просто наговнякаю кроном ыыы

>>51480

> из треда тупых вопросов


мы никуда и не уходили :О

>>51496 (Del)
что, восхищаешься питоняшеством, да лигушка :?
515 2351588
>>51381
Ну так а я что что-то про шаблоны говорил? Я имел в виду вьюхи рест фреймворка, это типа контроллеры в джанге так называются.
SA6vS886RWahQeMIDuLRM1X210DSCwp9Vj587nF8JEdH8hyeLqSXL0YsGgF[...].jpg122 Кб, 1200x504
516 2351657
мужчины, прямо сейчас, прямо здесь. назовите лучшую книгу по питону, чтобы стать змеиным богом уже завтра. без шуток, пожалуйста. заебало читать про типы данных-хуянных, функции и классы. хочется что-то прикладное.
спасибо!
517 2351661
>>51657
Док и репы в гитхабе
Прикладного нигде нет. Вообще нет.
518 2351662
>>51658 (Del)
Да хз, яб сам не отказался. Ну так, я вот делаю сайтик, гуглю что конкретно хочу, документацию читаю. Ну а так начинал делать по видосу от freecodecamp Django REST + Vue, как-то так, думаю нагуглишь.
519 2351666
Накатил motor, а vscode не видит методы, все any, снова.
Скриптовые языки уже начинают немного подбешивать.
520 2351691
>>51661
это. очень. плохо.
я не могу научиться программировать, понимая теорию и чужой код.
521 2351693
>>51691
А придётся. Ты редко когда будешь писать проекты с нуля. В основном будут просить либо придерживаться какого-то определённого стиля, либо дорабатывать существующий проект. Тебе дадут развивать имеющийся проект, будешь его переписывать?
Хотя, сейчас в эпоху микросервисов может и дадут возможность что-то сначала делать, но эти паттерны были придуманы не просто так по желанию левой пятки. Ты каждые пару месяцев захочешь переписывать проект. Так что в любом случае, понимание и поддержка чужого говнокода это часть процесса.
522 2351697
>>51693
видимо, я косноязычно выразился.
Я понимаю чужой код, понимаю теорию: проходил структуры данных, системный анализ, паттерны (но в них, кстати, довольно много пробелов). Знаю про БД, нормализацию, отношения и так далее.
Знаю базово и джаву, и c#, и js (спиздить чужой код - переделать под себя).
Но я вижу, что у меня нет никаких навыков разработки. Я не могу сесть и написать программу, которую захочу. То есть я не могу понять, с чего нужно начать.
Поэтому мне всегда кажется, что нужно восполнить какие-то пробелы, что где-то есть какая-то "таблетка для буста в программировании" в виде книги, лекций или программы обучения.
Поэтому я вновь и вновь начинаю изучать всякие метаниты, learnjavascript'ы и так далее, но никогда дальше объявления класса у меня не заходит.
523 2351701
>>51697
Делай проекты. Интеграции с какими-нибудь апи. Например, транслировать чат из телеги в дискорд и наоборот
524 2351709
>>51706 (Del)
додик завидует топовому теку или чево я не понял?)))

> Наверное и стол не из опилок


очевидно, я же не калоед)

> дуба


обычного, расеянского, класса экстра ;)
525 2351711
>>51701
ну вот. я даже не знаю, с чего приступать в таком случае. прочитать документацию аиограм?
526 2351715
>>51711
Конечно. Понять как работает эта штука. Делать, естественно с каким-нибудь git, можно github. Можно через бота делать для начала чтоб попроще было, а не через mtproto. Юзеров конектить, очереди может кое-где прикрутить, хотя можно и без. Базу по необходимости, может и редис куда пристроить найдётся. Упаковать в докер без композа(он и в проде нахер ненужен честно говоря) и задеплоить, если есть убунту. Вывести логи в графану можно через локи ну и пересборка по комиту через дженкинс, но это уже всё по желанию.
Вариантов и объём реализаций куча. На начальном этапе можно обойтись и скриптом без вебфреймворка, если сделать через aiohttp и кучей воркеров, просто чтоб понимать процесс и тонкости.
527 2351716
>>51711
И да, начинать не с доков по либам, а с доков по апи. Куда что прикрутить, как читать и чем пересылать.
528 2351717
>>51715
Ветки в гите раздели на dev и stable, заодно мерджить научишься правильно
lKdUHxa2jMSjxFkcOkrzeF7QWi5RQEZ5DVOiQrX01IQt9l7imm7fmeUqVjj[...].jpg79 Кб, 564x484
529 2351719
>>51715
Спасибо за советы) не всё, конечно, понятно, но начинаю писать бота с каким-нибудь заполнением формы и сохранением её в бд.
Как я понимаю, это тоже ты
>>51716
>>51717
как раз на днях хотел начать вести гитхаб с выполненными заданиями
530 2351825
>>51719
Фронт тут необязателен. Лучше не делай фронт на питоне, он убогий
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 4 августа 2022 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски