Вы видите копию треда, сохраненную 29 мая 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Свой код кидайте через https://repl.it/languages/python3
Книги: https://yadi.sk/d/tArKKuQu3Kejuq и ссылка на PyCharm
Книги: https://yadi.sk/d/H-00n-UG3RSQem/
Предыдущий тред >>1159798 (OP)
Python питон
За cmd ничего не скажу, но так как ты делаешь нельзя делать. Надо (на примере баша):
bash -c 'clear; echo Hello; echo Itsme'
чтобы он жрал скрипт из stdin:
bash -
Эти интерпретаторы принимают в cmdline параметрах имя файла со скриптом:
bash script.sh
Всё в общем-то очень похоже на запуск бинарника питона.
оп чмо, даже мой няшный сайтик для зелени не хочет в шапку вставлять, чую бунт нахуй
следующий треад будет НАШ сука!
так что собирай подборку годноты в гудрайв братишка, а я оформлю и создам
https://docs.google.com/document/d/1_tdwh9HR5j2aZ1CNg1YR9dwiEl5kvC1ZP1zHy933A14/edit
https://sites.google.com/view/pypry/
да ладно, зато питон смешной
Точно, спасибо.
>>64670
Не, не хочет.
Теперь время ещё более тупых вопросов. Вот смотри, какую абсолютно бесполезную программу я сделал, пока осваиваю субпроцессы эти: https://repl.it/repls/FuzzyAlphanumericAgents
Ничего сложного вроде - главная программа получает слова и отдает их пакетами по 3 штуки дочерним программам, чтобы они печатали. Но, субпроцессы нужны, как я понял, чтобы делать охуенно быстрые программы. И вот одна программа, которая бы просто печатала все, что получает, выводила бы любой текст мгновенно (ну не так, чтобы прямо любой, но любой, который не лень мне набрать руками в командную строку). Эта же программа с использованием субпроцессов выводит строки (как минимум на моем пк) с заметной задержкой. Не пару секунд, доли секунд, но заметно, что строки появляются не мгновенно. Вопрос, как так?
а ещё, как вам программа упаковки по 3 штуки? Я выкупаю, что можно сделать 3 слайса и zip()'нуть их, но тогда надо будет как-то разбираться с остатком в случае, если предметов в iterable не N*3, и генератора не получится
кстати в repl.it есть командая строка? мне надоело исправлять программы, чтобы поделиться ими с вами
>как так?
Ну а что ты ожидал? У тебя там с нуля запускаются отдельные процессы, который только выводят хелловорлд и сразу дохнут. Вывести хелловорлд десять раз быстрее из одного процесса.
Ерунду сделал в разбиении по 3. Можно короче и проще.
>Но, субпроцессы нужны, как я понял, чтобы делать охуенно быстрые программы.
Вообще никакого отношения к производительности субпроцессы не имеют. Откуда ты это выдумал вообще?
>Вопрос, как так?
Во-первых, что в твоём понимании "мгновенно"? Во-вторых, почему они должны быть быстрее? И, главное, быстрее чего? Твойему коду нужно запустить новый процесс, передать туда какие-то данные, пдождать обработки и потом их получить назад. Это никак не будет мгновенно. Через subprocess ты можешь запускать что угодно, даже аллаха, никакая магия мгновенным ничего не сделает.
>кстати в repl.it есть командая строка?
Она там на полэкрана, ты что, линзы снял?
>а ещё, как вам программа упаковки по 3 штуки?
Тебе честно или мягко? yield iterable[i:i+3] и всё. И пофиг, что там может быт не кратно 3, слайсит нормально. Зачем тебе вообще эти None'ы, ты же их не используешь никак. В крайнем случаем можно накостылять yield (iterable[i:i+3] + [None, None, None])[:3].
>Вообще никакого отношения к производительности субпроцессы не имеют. Откуда ты это выдумал вообще?
В книге написано: "With the advent of multicore processors as the norm rather than the exception,
it is more tempting and more practical than ever before to want to spread
the processing load so as to get the most out of all the available cores."
Схуяли это будет tempting, more practical и get most of all cores, если это не быстрее нихуя? Зачем вообще они тогда нужны?
>Во-первых, что в твоём понимании "мгновенно"
Последовательно достаточно быстро, чтобы для меня выглядело так, будто это мгновенно.
>И, главное, быстрее чего?
Быстрее той же программы, написанной без субпроцессов. Если я выкину субпроцесс и сделаю for in packages... : print() Строки будут появляться так быстро, что я не замечу разницы между появлением первой и последней - будет выглядеть так, будто они появились все вместе разом. При использовании субпроцесса я замечаю остановки между появлениями строк.
>Она там на полэкрана
На полэкрана там интерактивный Питон, а я хочу делать: python script.py args
>Тебе честно или мягко?
Бля. А None'ы нужны чтобы сохранять структуру - пакет по 3 штуки в каждом.
>а я хочу делать: python script.py args
Тогда иди арендуй VPS'ку.
>Быстрее той же программы, написанной без субпроцессов.
>если это не быстрее нихуя
Ты понимаешь разницу между "использовать все ядра" и "зделоть быстрее"? Особенно вот это вот выданное тобой "охуенно быстрые"
Создание процесса затратно. И твоя никчёмнейшая задача по выводу трёх слов вообще практически никакого времени не занимает относительно всего того, что ОС должна сделать для создания нового процесса.
Вот если бы ты там протеины считал, то да, вышло бы приблизительно в кол-во ядер раз быстрее.
>А None'ы нужны чтобы сохранять структуру - пакет по 3 штуки в каждом.
Добавь один раз в конец список из (3 - len(iterable) % 3) % 3 None'ов и слайси по-человечески. Ну, число, которого не хватает до кратности трём, короче, может я тут намудрил немного с формулойю
>Если я выкину субпроцесс и сделаю for in packages... : print() Строки будут появляться так быстро
Ну, а что быстрее, по-твоему, нарезать батон хлеба самому, или приглашать на каждый новый ломтик нового шеф-повара, пускай и позвонив им всем одновременно?
>А None'ы нужны чтобы сохранять структуру - пакет по 3 штуки в каждом.
Только ты эту структуру сохраняешь для того, чтобы потом иметь дополнительное условие при выводе текста и писать 0 байт при отсутствии слова. Немного бесплезно, не находишь?
дополнение
>Ты понимаешь разницу между "использовать все ядра" и "зделоть быстрее"?
Нет, пока понятия вообще не имею о том, что и как процессор делает. Хочу потом прочитать Архитектуру Тенненбаума, но потом..
Пока я вижу это как мужика, который копает мне яму. И если я позову второго, они вдвоем выкопают ее в два раза быстрее.
>И твоя никчёмнейшая
Понял, т.е. новые процессы нужны только тогда, когда их работа будет длиться дольше их самих? А насколько затратно плодить треды?
>А насколько затратно плодить треды?
Давай я тебе аналогию приведу хорошую. Вот браузер долго запускается. Зато страницы потом скроллятся быстро с большим фпс. Вот то же самое и с тредами/процессами.
Когда-то давно когда трава ещё была зелёная на веб-серверах был CGI. На каждую открытую страницу запускался целый процесс, который отрисовывал всё в stdout и завершался. Потом, внезапно, оказалось что такой сервер очень легко положить просто отправив ему например 50000 запросов. Уж очень много времени уходит на запуск, чтение с диска, парсинг, интерпретацию, прогрев инициализации и подчистку мусора.
Потом как грибы после дождя полезли всякие FastCGI и ему подобные протоколы, которые запускают пул процессов, например десяток, приконнекчивают к ним очереди и наливают в эти очереди запросы. Процессы остаются те же, читать с диска экзешки и скрипты каждый раз не надо, выполняется только полезная работа, правда организовать такой пайплайн сложнее.
Дальше подумали что вот как-то неправильно это, что процесс ждёт например базу данных, когда можно посчитать что-нибудь для других клиентов. Или какой-то медленный клиент очень долго заливает запрос, всё стоит не шевелится, а тысячи других ждут. Вот тут уже закатывается асинхронность. Асинхронные процессы точно так же спавнят в нескольких экземплярах (обычно равно количеству ядер процессора) и они максимально используют возможности процессора обслуживая сразу одновременно всех, и быстрых, и медленных, и там где что-то ждётся долго извне, при этом могут принимать новые подключения. Соответственно сложность организации такого кода ещё выше чем в простом пуле процессов.
Как можешь видеть, здесь есть tradeoff, надо выбрать либо скорость и удобство разработки (чтобы попроще), либо оптимальность (так будет трудозатратнее). Ситуация ещё нивелируется тем, что даже если ты пишешь например на джанге, то ты всё равно используешь асинхронность, например разворачивая джангу под nginx. В итоге nginx накапливает медленные запросы и джанге уже ждать ничего не надо, она просто хуярит циклом приходящие в готовом виде запросы и выплёвывает ответы. Сама джанга обычно под gunicorn/uwsgi которые делают пул процессов этой джанги и предотвращается CGI. Как видишь, кучу проблем за тебя уже решили, и даже последний долбоёб уже сможет поднять на джанге вполне сносно работающий сайт.
>А насколько затратно плодить треды?
Давай я тебе аналогию приведу хорошую. Вот браузер долго запускается. Зато страницы потом скроллятся быстро с большим фпс. Вот то же самое и с тредами/процессами.
Когда-то давно когда трава ещё была зелёная на веб-серверах был CGI. На каждую открытую страницу запускался целый процесс, который отрисовывал всё в stdout и завершался. Потом, внезапно, оказалось что такой сервер очень легко положить просто отправив ему например 50000 запросов. Уж очень много времени уходит на запуск, чтение с диска, парсинг, интерпретацию, прогрев инициализации и подчистку мусора.
Потом как грибы после дождя полезли всякие FastCGI и ему подобные протоколы, которые запускают пул процессов, например десяток, приконнекчивают к ним очереди и наливают в эти очереди запросы. Процессы остаются те же, читать с диска экзешки и скрипты каждый раз не надо, выполняется только полезная работа, правда организовать такой пайплайн сложнее.
Дальше подумали что вот как-то неправильно это, что процесс ждёт например базу данных, когда можно посчитать что-нибудь для других клиентов. Или какой-то медленный клиент очень долго заливает запрос, всё стоит не шевелится, а тысячи других ждут. Вот тут уже закатывается асинхронность. Асинхронные процессы точно так же спавнят в нескольких экземплярах (обычно равно количеству ядер процессора) и они максимально используют возможности процессора обслуживая сразу одновременно всех, и быстрых, и медленных, и там где что-то ждётся долго извне, при этом могут принимать новые подключения. Соответственно сложность организации такого кода ещё выше чем в простом пуле процессов.
Как можешь видеть, здесь есть tradeoff, надо выбрать либо скорость и удобство разработки (чтобы попроще), либо оптимальность (так будет трудозатратнее). Ситуация ещё нивелируется тем, что даже если ты пишешь например на джанге, то ты всё равно используешь асинхронность, например разворачивая джангу под nginx. В итоге nginx накапливает медленные запросы и джанге уже ждать ничего не надо, она просто хуярит циклом приходящие в готовом виде запросы и выплёвывает ответы. Сама джанга обычно под gunicorn/uwsgi которые делают пул процессов этой джанги и предотвращается CGI. Как видишь, кучу проблем за тебя уже решили, и даже последний долбоёб уже сможет поднять на джанге вполне сносно работающий сайт.
Ещё вопросик
Я правильно понимаю, что дочерний процесс, получающий данные от главного через Popen.communicate(data) не продолжит выполнение, пока главный не вызовет Popen.stdin.close()? А главный остановится на получении данных из Popen.communicate() пока дочерний процесс не завершится? Или как это работает?
>Нет, пока понятия вообще не имею о том, что и как процессор делает.
Для простоты считай, что несколько ядер = несколько процессоров. Ты можешь выполнять параллельно несколько задач, но каждая из них сама по себе быстрее работать не будет. Прирост в скорости идёт только за счёт параллельности (т.е. только для всей программы в целом, а не какой-то одной функции).
>А насколько затратно плодить треды?
Ну, менее затратно, чем процессы. Очень примерные цифры можно замерить попробовать - https://repl.it/repls/ConsiderableUnwrittenLists
>И если я позову второго, они вдвоем выкопают ее в два раза быстрее.
Если яма достаточно большая, чтобы её, во-первых, можно было не мешая друг другу копать с разных сторон (один процесс не зависит от результатов другого), а во-вторых, длительнсоть выдачи тобой им инструментов и средст защиты (ты-то один, запускаешь процессы всё равно последовательно) значительно меньше, чем собственно их работа, то да, примерно в два раза быстрее и будет.
>когда их работа будет длиться дольше их самих
Либо когда тебе зачем-то нужна параллельность на многопрессорных системах.
Проверь настройки подсветки в инспекции. Там можно указывать совместимость с разными версиями и оставь только 3.6
Я могу хранить строки в set() мне нужно вытащить все уникальные имена из файла кроме как в виде (string, ) ?
Хочу написать простенькую приложуху на киви, для андройда.
Вопрос.
Как в питоне отделается модуль от представления, по аналогу с паттерном MVVM?
Или никто такой хуйней не заморачивается?
>почему никто другой тупые вопросы не задает
Да тут весь тред тупых вопросов.
>Я могу хранить строки в set() кроме как в виде (string, ) ?
Переформулируй свой вопрос. Чем тебя смущает хранение строки в виде, эм, строк?
>хранение строк в виде кортежей с единственным элементом.
А что и такое бывает в этом вашем питоне?
че думаете по поводу "Программирование на Python 4-e издание"?
>Меня смущает хранение строк в виде кортежей с единственным элементом.
Гарантирую, что каржет из одной строки имеет только уникальные строки. Зачем ты это в сет пихаешь? Если ты хочешь оставить только уникальные строки из какого-то списка, то и пихай этот список в сет. Иначе ты хуйню какую-то творишь.
Разве никто не пилит независимые исполняемые файлы? Чзх?
>Гарантирую, что каржет из одной строки имеет только уникальные строки.
Ну, да... уникальную 1 строку из которой он и состоит.
>Если ты хочешь
Я хочу получить все теги из xml файла. И делал сразу создание сета / добавление тегов в него. Но со списком проще, но и места наверное больше будет забирать до превращение в сет.
> И делал сразу создание сета / добавление тегов в него.
Покажи свой код, короче.
Чем тебя, например,
>s = set()
>for tag in tags:
> s.add(tag)
>l = list(s)
не устраивает? На выходе получаешь список из уникальных тегов. И не нужно никаких туплов непонятных. Зачем тебе он вообще понадобился? Потому что ты написал set(string) и оно по буквам разбилось?
Забыл про .add, делал .update и получал разбивку по буквам, поэтому приходилось делать .update(tupe()). Спасибо.
>Но со списком проще, но и места наверное больше будет забирать до превращение в сет.
Тебе жалко память? На микроконтроллере тостера вычисляешь, что ли?
Я так-то имел в виду, что у тебя на входе где-то должна была быть некая коллекция строк. Вот её сразу и преобразуй в сет.
дополнение
Ну вот я сделал немного похожие функции. Так же есть функция с выражением-генератором (я думал, самая быстрая), есть с выражением-листом (я думал, вторая по скорости будет, и есть третья, вроде как есть первая (первая а не вторая т.к. не создает дополнительных листов) без синтаксического сахара. А в итоге все вообще не так, как я думал. Где я ошибаюсь?
Можно ли не ебаться с cmd для запуска?
Можно ли скачать какую нибудь ide, чтобы по f9 запускалась прога в консольке?
Есть какая нибудь замена пай > чарму? она у мння пиздец лагает
>Можно ли скачать какую нибудь ide, чтобы по f9 запускалась прога в консольке?
в саблайме если поебаться с билдом, можно так сделать, скорее всего
>Есть какая нибудь замена пай > чарму? она у мння пиздец лагает
wing ide или саблайм с плагином "анаконда"
Сначала думал в data science податься, но не совсем понимал что это такое гадание на кофейной гуще, графики, а с программированием как-то мало общего, да и с нуля джуном точно хуй куда возьмут.
А как же другие направления python? Что, неужто только web?
Я только начал вкатываться в python, до этого дрочили паскалем в школе. Показалось легким, решил взяться за питон. Выбрал книжку, но че-то только первые 2 главы осилил, по мне нудноватая немного.
а ты как хотел?
я когда учил то тоже засыпал. По мне чем лучше книга тем больше от неё засыпаешь.
Ну, я просто думал, если мне нудно - значит мне не интересно, я тащемта еще попробую осилить книгу, если совсем скучно будет, то прекращу попытки вкатывания в it
ну ёптваю)
Почему я должен выбрать Питон, а не Го, например?
Да. Можно привести пример как обкуренный Кастанеда засыпал на берегу оросительной канавы, когда начинал видеть необъяснимые вещи, а Дон Хуан его будил.
Звучит легко, ну запустил и запустил, но основной скрипт, который вечно чекает новый запросы стопорится, пока вызванная функция не закончит свою работу.
Вопрос в том, как запустить функцию на фоне, или другой питон-файл на фоне, только со входными параметрами.
Сама функция принимает два аргумента, обязательных. Как сиё извращение реализовать? Двач, помогай.
Поздравляю, пришло время узнать, что такое асинхронные запросы
я вот сейчас Лутца читаю, но я как понял, он вообще для тех, кто раньше с программированием не сталкивался
алсо, под "эва", он имел ввиду слово "ever", мол самая лучшая книга
В отличие от компа у воспринимаемой человеком информации есть такой параметр, как ценность.
Комп не может отбросить данные посчитав их малоценными. Т.е. может не обрабатывать данные выходящие за пределы условий задачи, но он не обладает самостоятельным критерием плохих или хороших данных.
Комп - идеальный вычислитель, а человек - это работающая биологическая задача, запущенная на аналоговой вычислительной машине. У человека есть критерий ценности данных.
Мозг глубоко перерабатывает только ценную для него информаци. Все таки астральные галюны Кастанеды не были ценными для его мозга, а засыпал он от наркотического опьянения.
мимо аутист
C:\Users\User\AppData\Local\Programs\Python\Python36 - полный адрес. Я пытаюсь ввести его в строке так:
C:\Users\User\AppData\Local\Programs\Python\Python36 script1.py , но у меня выдает это: "C:\Users\User\AppData\Local\Programs\Python" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Ставь прыщи в виртуалбокс - не сношай мозг. В ghsof[ быстрее поймешь, что такое executable path
list6, list6[i+1], list6[i+2] = 5, 5, 5 ?
somelist[i:i+3] = itertools.repeat(5, 3)
list6[i:i+3] = (5,)*3
>>> a = 'you'.encode('utf-8')
>>> a
b'you'
>>> b = 'faggot'.encode('utf-8')
>>> b
b'faggot'
>>> set([a,b,b,a, b'sasat', 'faggot'])
{b'faggot', b'you', 'faggot', b'sasat'}
>>> set(a)
{121, 117, 111}
В set() можно хранить объекты любого иммутабельного класса (на самом деле нужно чтобы у класса был определён __hash__(), но это неважно).
str в питоне - иммутабельный тип.
(str, ) - тоже иммутабельный. Но зачем, если можно просто str?
Если не ньюфаг в погромировании - достаточно навернуть 'Byte of Python', а дальше начать писать какой-нибудь пет-прожект, читать офф. доки и гуглить возникающие вопросы.
Если ньюфаг или хочешь таки навернуть толстую книжку с разжевыванием - то "Mark Lutz - Learning Python".
Вообще для варианта "не ньюфаг" есть ещё вариант - офф. туториал:
https://docs.python.org/3/tutorial/
Но его я не смотрел, не знаю насколько годный ли он, пусть анончки подскажут.
Как, ты тутор от Гвидо не смотрел!!!!1111
Есть смысл параллелить их с помощью asyncio.subprocess или последовательно они будут выполняться примерно так же быстро?
А есть ли библиотеки, которые эту полиномиальную регрессию распараллеливают?
Задача следующая, для университета я должен распараллелить или с помощью нескольких потоков выполнить вот эту полиномиальную регрессию для нескольких сотен точек.
1) смотришь алгоритм в вики
2) реализуешь без параллелизации самостоятельно
3) используя модуль muliprocessing (multithreading не имеет смысл использовать, он ограничен GILом) парадлелишь матричные операции
О, прикольно, спасибо большое, пока не разобрался, но выглядит очень обнадеживающе, вроде, пишут, что таки можно прямо sklearn код параллельно выполнить.
>реализуешь без параллелизации самостоятельно
Не, я сам - кусок говна и получится закономерное гумно. Поэтому я только чужой код использую.
Субпроцессы и так уже параллельны. Ну, если только ты там не наговнокодил с subprocess.call или wait() в лупе, конечно.
Так я дремучий подпивасный быдлос, ясен пень, что никакие нейронные сети и машинное обучение мне не светит. Просто я заканчиваю бакалавриват и доделываю дипломную работу.
Пайтон анлокед или флюент пайтон
В смысле, когда вакансии программиста питониста для веба, в требованиях не пишут JS, HTTP, CSS, а пишут конкретные фреймворки типа джанго, фласк, и ещё sql\nosql. Я просто не особо понимаю сути работы. Как вообще работа питониста выглядит, чем он занимается?
> 10-20 субпроцессов
Кстати, сколько надо делать субпроцессов? Вот анон выше мне отвечал на мои тупые вопросы, что если решать задачу с субпроцессами, то будет примерно в количество ядер быстрее. Но очевидно есть предел субпроцессам, иначе бы их просто 10000000 на любую задачу запускали бы и она решалась мгновенно. Так какое оптимальное количество субпроцессов? И кстати Питон/ось как догадываются, что субпроцессы должны быть на разных ядрах выполняться?
>>65823
>multithreading не имеет смысл использовать, он ограничен GILом
Зачем в Питон встроена нерабочая фича?
мимодругой
Если здесь есть совсем ньюфаги, рекомендую периодически заглядывать на Гикбрейнс, там есть халявные курсы, которые даже онлайн смотреть не надо - запись выкладывают потом. А в онлайне можно вопросы позадавать.
Вот, например:
https://geekbrains.ru/courses/112
Знаю какие-то основы, всего понемногу, но вкатиться будет явно легче.
Что я прошу у вас, прошу я годные туториалы/книги/лекции, где будет интересно и инфа будет более-менее рассортирована.
Спасибо.
>я юзаю PyCharm
А я его установить не могу, лол. Инсталлер зависает после выбора папки установки. Ну и черт с ним, Блокнот Два Икса наше все.
и что за синтаксис вообще такой while 1 а не while True?
Бесконечный цикл. Почему 1 вместо тру? Дебил считает, что это ахуенная оптимизация, минификация кода...
ну вот я запускаю его потом запускаю клиент, клиент шлёт месадж и этот сервер сразу вырубается, не позволяя прислать ему еще меседж. Почему так, а цикл бесконечный.
В этом примере у тебя в цикле иф/елсе, а в том обрабатываешь неправильно выходит. Копипастить надо тоже с умом.
>while 1 а не while True?
Хипестор выделиться пытается. В 30-летнем ANSI C нет булеанов и true/false (костыляли просто макросы/дефайны на 1 и 0).
Возможно ещё боится, что какие-то сумасшедшие пользователи второго питона переназначат True в 0 и луп не сработает.
>>65913
>это ахуенная оптимизация
Во втором питоне же действительно оптимизация, лол. https://stackoverflow.com/questions/3815359/while-1-vs-for-whiletrue-why-is-there-a-difference на треть быстрее!
>>65949
Сокеты надо закрывать, потому что.
>>65866
>если решать задачу с субпроцессами, то будет примерно в количество ядер быстрее.
>иначе бы их просто 10000000 на любую задачу запускали бы и она решалась мгновенно.
У тебя с логикой не очень. Откуда ты вот "мгновенно" это взял после фразы о количестве ядер? У компьютера ограничены ресурсы, и максимальная производительность и достигается использованием всех имеющихся ресурсов. Вот по сравнению с однопоточным вычислением, многопоточное и будет максимум в кол-во ядер быстрее.
>Так какое оптимальное количество субпроцессов?
Зависит от задачи, но обычно близко к количеству ядер процессора (если числа, то ровно можно).
>И кстати Питон/ось как догадываются, что субпроцессы должны быть на разных ядрах выполняться?
Не должны. Но если есть свободные ресурсы, нормальная ОС постарается их использовать. https://en.wikipedia.org/wiki/Scheduling_(computing)
>Зачем в Питон встроена нерабочая фича?
Она не нерабочая (ну, условно говоря), просто посчитал Гвида, что так будет лучше.
> Зачем в Питон встроена нерабочая фича?
Треды отлично работают с тем кодом, который GIL отпускает: сетевое io, файловое io, системные вызовы, сишные либы (которые по-людски написаны).
Говно изо рта вынь.
В общем как на скрине. Всё работает, но это достаточно "питонистический" способ или можно короче?
Чёт мне часто такую "сцепку" в своём говнокоде приходится делать, наверное стоит создать utils-модуль и создать там функцию chain_dicts_values. Только chain_dicts_values какое-то хуёвое название, но лучше я придумать не могу.
Наверное я хуйнёй заморачиваюсь.
Оказывается, что стандартный JSONRenderer из DRF умеет обрабатывать питоновские объекты, так что обошелся ручным формированием запроса и последующим вызовом Response
Я дважды тупой, оказывается Сериализаторы просто отдают словарик, если натравить его на объект и руками можно ничего не перекладывать
КОД ПИШИ
@
ДОКУМЕНТАЦИЮ НЕ ЧИТАЙ
Я правильно понимаю, что порты используются только на сервере? Я сначала думал, что интернет работает так: на клиенте и на сервере есть по 2 сокета. Клиентский для отправки серверу, клиентский для получения ответа, серверный для получения ответа, серверный для отправки клиенту ответа. В клиентском для отправки делают .connect() нацеленный на адрес и слушающий порт сервера, клиентский слушающий просто привязан к слушающему порту, серверный слушающий привязан к слушающему порту, а серверный для отправки создается нацеленным на адрес и слушающий порт клиента после получения реквеста ебать написал. Но. Но. Но. Я правильно понимаю, что все эта хуйня и работает на самом деле так, как я охуенно нарисовал? Порты задействованы только у сервера, и сервер их слушает. У клиента же только 1 сокет, который тот нацеливает на адрес, слушающий порт сервера. А после .connect() клиента .accept() сервера возвращает этот же клиентский сокет. И мне не нужен ни адрес клиента, ни его порт т.к. получить клиентский сокет это почти тоже самое, что получить object reference на объект в рамках одного скрипта? И после этого я могу получать данные от клиента и отправлять ему что захочу и сколько захочу раз используя этот сокет? (в моем рисунке - Ssocket) Это так работает?
Если да, зачем .accept() возвращает адресс, который был дан .connect() методу в клиенте? Какая разница между .connect("", 1488) и .bind("", 1488) для создания слушающего сокета сервера? Какая разница между передачей в эти методы "", "localhost" и socket.gethostname()? Как узнать доступные порты и сделать это динамически? А то я укажу серверу слушающий на 1488 свободный у меня, а у другого пользователя 1488-ой занят чем-то, и все полетит.
Этот пиздец читать не буду, но удваиваю реквест о точном понимании портов и прочей лабуды, что анон выше упомянул.
так же как и файлы это интрфейс юникса... то есть файл и порт в юниксе по сути одно и тоже
Да! Все есть поток байтов
Очень грубо и, вероятно, местами неточно, но хоть как-то.
Сокет это сокет, как розетка. В него можно что-то вставить. В данном случае, ты устанавливаешь TCP соединение, вставив TCP провод в сокеты сервера и клиента.
Так как подключается клиент, ему нужно знатЬ, куда, собственно, подключаться. Для этого у сервера и есть адрес + порт, указывающие на, собственно, сервер и конкретный сокет, ожидающий этот тип подключения.
>ебать написал
Нихуя не понятно, что ты написал, так что и ты, наверное, нихуя не понял. Соединение может быть двусторонним.
>Если да, зачем .accept() возвращает адресс, который был дан .connect() методу в клиенте?
Чтобы сервер знал, откуда пришло соединение?
>Какая разница между .connect("", 1488) и .bind("", 1488) для создания слушающего сокета сервера?
Во-первых, connect это, как можно догадаться из названия, подключение к чему-то. Это не создание сокета, и уж тем более не слушающего. В connect ты указываешь удрес удалённого терминала, а в bind — своего.
>А после .connect() клиента .accept() сервера возвращает этот же клиентский сокет. <...> Это так работает?
Хуй знает что ты там понаписал. Нет, не этот же, потому что они на разных, чёрт возьми, машинах находятся. У сервера свой сокент, с локальным и удалённым адресами (laddr, raddr), а клиента свой. Да, возвращённый accept'ом сокет это тот, к которому клиент подключился, у него есть инфа об адресе клинета и прочем.
>И мне не нужен ни адрес клиента, ни его порт
Нужен. И сокет имеет эту информацию. Иначе бы ты нихуя передать не смог.
>Какая разница между передачей в эти методы "", "localhost" и socket.gethostname()?
локалхост это локалхост, то есть исключительно с этого компьютера сокет доступен. gethostname(), ну, hotsname компьютера и возвращает (в гугл иди), а "" биндит на всех интерфейсах, т.е. "0.0.0.0".
>А то я укажу серверу слушающий на 1488 свободный у меня, а у другого пользователя 1488-ой занят чем-то, и все полетит.
На сервере ты указываешь, какой свой порт слушает сервер, и клиент туда подключается. Когда ты заходишь в браузере на yandex.ru, на самом деле браузер просто подключается к адресу "5.255.255.55" в 443 порт.
На клиенте ты можешь использовать любой порт. Обычно система сама выбирает рандомный свободный, но если очень надо, ты сам можешь сначала забиндить на клиенте (клиентом!) сокет и уже с него подклчюаться к серверу.
Очень грубо и, вероятно, местами неточно, но хоть как-то.
Сокет это сокет, как розетка. В него можно что-то вставить. В данном случае, ты устанавливаешь TCP соединение, вставив TCP провод в сокеты сервера и клиента.
Так как подключается клиент, ему нужно знатЬ, куда, собственно, подключаться. Для этого у сервера и есть адрес + порт, указывающие на, собственно, сервер и конкретный сокет, ожидающий этот тип подключения.
>ебать написал
Нихуя не понятно, что ты написал, так что и ты, наверное, нихуя не понял. Соединение может быть двусторонним.
>Если да, зачем .accept() возвращает адресс, который был дан .connect() методу в клиенте?
Чтобы сервер знал, откуда пришло соединение?
>Какая разница между .connect("", 1488) и .bind("", 1488) для создания слушающего сокета сервера?
Во-первых, connect это, как можно догадаться из названия, подключение к чему-то. Это не создание сокета, и уж тем более не слушающего. В connect ты указываешь удрес удалённого терминала, а в bind — своего.
>А после .connect() клиента .accept() сервера возвращает этот же клиентский сокет. <...> Это так работает?
Хуй знает что ты там понаписал. Нет, не этот же, потому что они на разных, чёрт возьми, машинах находятся. У сервера свой сокент, с локальным и удалённым адресами (laddr, raddr), а клиента свой. Да, возвращённый accept'ом сокет это тот, к которому клиент подключился, у него есть инфа об адресе клинета и прочем.
>И мне не нужен ни адрес клиента, ни его порт
Нужен. И сокет имеет эту информацию. Иначе бы ты нихуя передать не смог.
>Какая разница между передачей в эти методы "", "localhost" и socket.gethostname()?
локалхост это локалхост, то есть исключительно с этого компьютера сокет доступен. gethostname(), ну, hotsname компьютера и возвращает (в гугл иди), а "" биндит на всех интерфейсах, т.е. "0.0.0.0".
>А то я укажу серверу слушающий на 1488 свободный у меня, а у другого пользователя 1488-ой занят чем-то, и все полетит.
На сервере ты указываешь, какой свой порт слушает сервер, и клиент туда подключается. Когда ты заходишь в браузере на yandex.ru, на самом деле браузер просто подключается к адресу "5.255.255.55" в 443 порт.
На клиенте ты можешь использовать любой порт. Обычно система сама выбирает рандомный свободный, но если очень надо, ты сам можешь сначала забиндить на клиенте (клиентом!) сокет и уже с него подклчюаться к серверу.
>Если да, зачем .accept() возвращает адресс, который был дан .connect() методу в клиенте?
Только сейчас заметил. Нет, он не этот адрес возвращает, а адрес клиента.
Без объёмного объяснения это всё бесполезно.
Ну блять, ну дожили. Ты и месяц не изучаешь видимо программирование вообще? Что делает? Ну например хуярит вилкой скрипт или какую либо серверную апку, которую ему сказали сделать, попутно подглядывая в гугл, потом ебёт разметку в хтмл дивах (которые ему позволили ебать) твердостоящим членом, потом обмазывает её ЦСС, всовывает туда все свои формы и всякие левые написанные макаками ДЖСки, дабы не утруждался господин производством ДЖСок. Потом господин снимает app.run(Debug=True) и получает по ебалу ошибки и триппер в придачу. Он пишет тесты и говорит, что костыли это фичи, а пеп8 для дебилов, спустя некоторое время он заебывается, достает всю команду и понимает, что надо было читать про классы и модули, а он криворукое ебло не учел нормальный импорт. Получает кривожопого гомункула, которого отдает дезигнерам и прочим фронтенд гомосексуалистам, они охуевают от скилл-лвла божественного 300к/сек питон девелопера, который месяц вместо работы читал как вообще это сделать, причем на двачах и захуярил все за два часа, причесывают его, одевают в платьице, раскрашивают ему ебало дорогой косметикой и дают девопсу, дабы он заставил это все говно работать, он матерится, брызгает духами на этот полуживой труп, делает ему разряд электрошока с иньекцией адреналина, чтоб хотябы дергался и отправляет на ночь (утром релиз) тимлиду, и пускай с этим всем ебется тимлид, потому что это работа тимлида - доебывать то, что уже изнасиловали остальные. Тимлид утром в полном ахуении и с печатью презрения к коллегам идет к руководителю и нагло-нагло пиздит, что все охуительно-восхитительно и работает как бог работал первые 6 дней, но на стадии финального релиза нужно бы ещё спецов привлечь и вот к финальному релизу вызывают батю фулстака 10 лет опыта чистить вилкой говно за долбоебами круглые сутки, который с помощью магии преобразовывает и рефакторит говно в золото. Магия? Нет. Чистая алхимия.
Чёт в голос. Пиши ещё?
насчет винды нескажу, но в unix все проще некуда.
import subprocess
subprocess.call("clear")
subprocess.call(["echo", "-e", "Hello\nI'ts me\nMario"])
это на уровне погрешности, но подумай вот у тебя есть сразу список и ты вычеркиваешь или ты вызываешь итерацию по генератору что быстрее? генератор выгоднее в плане экономии памяти.
Выбери го.
Я так понял, считается хорошим тоном отдельно пилить реакт приложение от сервера.
Я вот достал что-то из своего апи, которое лежит на pythonanywhere и хочу это там же показать (ну на том же сайте), что нужно делать?
Спасибо
Блокнот два креста, разумеется.
Ты ошибаешься, это универсальная IDE.
я чуть клаву сёдня из за него не разъебал
vim, idle
Захотел я, значит, завести отдельные fail очереди для очередей rq. Немного погуглил и, беглым взглядом, ничего конкретного не нашёл. Насколько я понял, надо завести экспшн хэндлер который, в зависимости от очереди, будет пушить таск в соответствующую fail очередь. Кто-нибудь таким занимался? Есть пример, чтоб не напрягаться особо?
Мне она начала казаться скучной где-то с функций, генераторов, лямбд и областей видимости. Но вот от ООП я кончил.
Пишарм нужен только для каких-то крупных проектов. Для обучения хватит какого-нибудь текстового редактора с подсветкой синтаксиса
def is_digit(string):
if string.isdigit():
return True
else:
try:
float(string)
return True
except ValueError:
return False
Блять
VSCode
Пасиба, а то вот такой костыль запилил уже, теперь чувствую себя инвалидом.
Здесь главное уяснить, что командовать интерпретатором можно на языке Си, а не только на питоне. Это нужно при написании модулей с требованиями к производительности. Глубже можно не вникать.
Не пользуйся Атомом, сразу переходи на VSCode.
Говорю как человек который долго терпел Атом, но в итоге таки дропнул это тормозящее говно.
Тому что можно ввести os.remove, вообще нельзя выполнять пользовательский ввод, который имеет гипотетическую возможность все похерить, это как неэкранированный drop database; в sql
>C:\Users\User\AppData\Local\Programs\Python\Python36 - полный адрес
это не полный адрес
полный адрес вот:
>C:\Users\User\AppData\Local\Programs\Python\Python36\python.exe
и чтобы запустить script.py к нему тоже нужно указать полный путь
а вообще добавь папку Python36 и Python36\Scripts в переменные окружения (загугли как, это просто)
потом ты сможешь запускать python просто введя python в командной строке
можно еще установить переменную окружения PATH через команду:
set PATH=%PATH%;C:\Users\User\AppData\Local\Programs\Python\Python36;C:\Users\User\AppData\Local\Programs\Python\Python36\Scripts
Да уж, ну, буду знать, спасибо.
Да ну, смешно же.
прости, что написал тебе аж через 3 дня после того, как новость появилась на официальном сайте
прикольно, спасибо
>for (query) in cursor:
> sqlRow = cursor.fetchone()
Что, по-твоему, делает первая строка? Почему там query? Ты query уже заэкзекутил. Подсказка: запринть свой "query" внутри лупа. Алсо, скобки там совсем не нужны, они всё равно абсолютно ничего не делают.
ну если бетховен-кошельки так делают, то и анончику можно
Ну на данный момент у меня есть т.н. "база" в файле json, и пожалуй логичнее будет ознакомиться с MongoDB.
Ну тогда читай статейки и документацию. Разве такая проблема найти материал?
Постгре умеет хранить и работать с JSON: https://www.postgresql.org/docs/current/static/functions-json.html
Я просто хочу прикрутить какую-нибудь базу к своему приложению, чтобы познакомиться с "БД", прочувствовать, что там и как, но чтобы это к тому же было актуально, а не какая-нибудь забытая забитая технология. Что мне выбрать? Postgres?
Да. Реляционные БД со сцены в ближайший десяток лет никуда не уйдут, а постгре - лидер среди опенсорсных реляционных БД.
Что такое постгре и зачем?
Хочу вкатиться, думал после 2х книг по самому Питону начать читать про sql
Хз, такую не знаю.
Вообще всё зависит от уровня твоего. Если не прогал раньше -- то можно вполне любую(имхо) книгу брать и читать. Пошерсти оглавление, если раньше прогал, и определи, насколько полезна она будет.
ок, спасибо
Какую библиотеку посмотреть?
Чёт я запутался. Для вычисления хэша кортежа используются просто айдишники объектов-элементов (что как-то тупо) или их хэши (а следовательно если есть мутабельный элемент то хэш кортежа вычислить нельзя)?
> являются хэшируемыми или нет
нет
> Их можно использовать в качестве ключей словаря?
нет
У листа нет метода hash, он не хэшируется.
Угу, разобрался.
И запомнил то иммутабельный != хэшируемый. По крайней мере в терминах Питона.
Нет, как раз таки правильно что иммутабельный == хэшируемый, но нужно чтобы он был полностью рекурсивно иммутабельным.
ну да, VSCode же не тормозящее говно. хз как люди строем подумали, что на электроне получаются пригодные в работе приложения
Ну не знаю, мне нравится. Пробовал все, что есть под венду и линукс. Винг вообще не понравился из--за шрифтов
да
tuple иммутабельный. Это значит только то что в tuple ты не можешь что-то добавить, не можешь удалить, не можешь записать по индексу. Но внутри tuple могут быть мутабельные объекты. И вот чтобы всё стало hashable нужно чтобы внутри тоже были иммутабельные.
Ещё раз, вычисление хэша проходит по всей структуре вглубь, не только по значению в вершине.
То что сам по себе тип хэшируемый ещё не гарантирует что все возможные структуры на его основе будут хэшируемыми.
>Речь была о кортежах.
>>type(a)
<class 'tuple'>
>tuple в пайтоне всё же называют иммутабельным типом, не?
Да, но только если он не содержит в себе других мутабельных типов.
>Речь была о кортежах.
Так в твоём кортеже set есть, вон именно он и не хешируемый.
>tuple в пайтоне всё же называют иммутабельным типом, не?
Он и есть иммутабельный.
Как хэндлить фейлы? Нужно откатить действия и принтануть инфу об ошибке (для скачивания - урл на котором упало и почему упало, для хеша - просто на чём сфейлилось).
Додумался до схемы на скрине, но блять, использовать Эксепшены для тупого ветвления скрипта это же хуёво, не?
Immutale
An object with a fixed value. Immutable objects include numbers, strings and tuples. Such an object cannot be altered. A new object has to be created if a different value has to be stored. They play an important role in places where a constant hash value is needed, for example as a key in a dictionary.
И
The only operation that immutable sequence types generally implement that is not also implemented by mutable sequence types is support for the hash() built-in.
Но
Attempting to hash an immutable sequence that contains unhashable values will result in TypeError
Хули тебе непонятно-то
В доках не описана ситуация, когды ты изменяешь тюпл через список внутри.
a = (1, [1,2])
identifier = id(a)
a[1].append(10)
id(a) == identifier
True
Он иммутабельный?
Расцветка красивая. В ебучем PyCharm только ссанина одна, а всё вручную лень настраивать.
Блядь, какой же ты тугой, иди на хуй.
VSCode
Не думаю. Если только не плагин какой-то для интерфейса. В ванильном Ноутпаде те же минусные кнопки немного иначе отрисовывают ветвь с отступами.
Обрати внимание на строки 64 и 65. Если их поменять местами, то всё работает нормально, то есть, в консоли я получаю вот такую байду:
> banana@banana-vm /mnt/vmshared/temp/vm $ python3 stdio.py
> 12345
> size: 5
> banana@banana-vm /mnt/vmshared/temp/vm $
> banana@banana-vm /mnt/vmshared/temp/vm $
> banana@banana-vm /mnt/vmshared/temp/vm $ echo blah-blah-blah
> blah-blah-blah
> banana@banana-vm /mnt/vmshared/temp/vm $
Если же оставить как есть и закрыть сначала in, а потом только out, то всё, терминал распидорашивает:
> banana@banana-vm /mnt/vmshared/temp/vm $ python3 stdio.py
> 12345
> size: 5
> banana@banana-vm /mnt/vmshared/temp/vm $ blah-blah-blah banana@banana-vm /mnt/vmshared/temp/vm $ banana@banana-vm /mnt/vmshared/temp/vm $
То есть, когда я пишу, буквы не появляются в терминале, но на ввод он реагирует, при этом не переносит каретку. Если вызвать какую-нибудь ll, то в её выводе от переноса строки только lf останется, cr куда-то проёбывается. Что я делаю не так? Почему последовательность восстановления атрибутов у потоков влияет на дальнейшее поведение терминала после того, как интерпретатор вернёт управление? Алсо, кажется, что с этими атрибутами и проблема, но я же, по идее, восстанавливаю то состояние, которое раньше было, что не так?
Ещё один вопрос: если я запускаю скрипт с перенаправлением ему в stdin, получаю вот такую херню
> banana@banana-vm /mnt/vmshared/temp/vm $ echo 12345 | python3 stdio.py
Traceback (most recent call last):
File "stdio.py", line 60, in <module>
in_stream = InputStream()
File "stdio.py", line 14, in __init__
self._settings = termios.tcgetattr(self._handle)
termios.error: (25, 'Inappropriate ioctl for device')
Как в таком случае следует работать с stdin? Это всё нет смысла делать, если ввод перенаправлен, но как это понять внутри скрипта?
Обрати внимание на строки 64 и 65. Если их поменять местами, то всё работает нормально, то есть, в консоли я получаю вот такую байду:
> banana@banana-vm /mnt/vmshared/temp/vm $ python3 stdio.py
> 12345
> size: 5
> banana@banana-vm /mnt/vmshared/temp/vm $
> banana@banana-vm /mnt/vmshared/temp/vm $
> banana@banana-vm /mnt/vmshared/temp/vm $ echo blah-blah-blah
> blah-blah-blah
> banana@banana-vm /mnt/vmshared/temp/vm $
Если же оставить как есть и закрыть сначала in, а потом только out, то всё, терминал распидорашивает:
> banana@banana-vm /mnt/vmshared/temp/vm $ python3 stdio.py
> 12345
> size: 5
> banana@banana-vm /mnt/vmshared/temp/vm $ blah-blah-blah banana@banana-vm /mnt/vmshared/temp/vm $ banana@banana-vm /mnt/vmshared/temp/vm $
То есть, когда я пишу, буквы не появляются в терминале, но на ввод он реагирует, при этом не переносит каретку. Если вызвать какую-нибудь ll, то в её выводе от переноса строки только lf останется, cr куда-то проёбывается. Что я делаю не так? Почему последовательность восстановления атрибутов у потоков влияет на дальнейшее поведение терминала после того, как интерпретатор вернёт управление? Алсо, кажется, что с этими атрибутами и проблема, но я же, по идее, восстанавливаю то состояние, которое раньше было, что не так?
Ещё один вопрос: если я запускаю скрипт с перенаправлением ему в stdin, получаю вот такую херню
> banana@banana-vm /mnt/vmshared/temp/vm $ echo 12345 | python3 stdio.py
Traceback (most recent call last):
File "stdio.py", line 60, in <module>
in_stream = InputStream()
File "stdio.py", line 14, in __init__
self._settings = termios.tcgetattr(self._handle)
termios.error: (25, 'Inappropriate ioctl for device')
Как в таком случае следует работать с stdin? Это всё нет смысла делать, если ввод перенаправлен, но как это понять внутри скрипта?
А что ты хочешь сделать?
>рест фреймворком
Ты че тупой? Тут пацаны с кортежами разобраться не могут, а ты нахуй рест блять какойто, работа блять настоящая. Ебу дал?
Ты дергаешь апи с данными на из своего сервера и рендеришь с ними данные на стороне клиента, тут вроде все очевидно
Причем совсем не вдупляю, как на гитхабе по пихону искать простые и приемлемые мне задачи, там или убер хард для меня повсюду с асинхронностью, которую я в душе еще не ебу или ... или не знаю как искать.
Всё полезное уже есть на pypi. Правда толково сделанных пакетов, обновляемых и протестированных немного.
Попробуй тестовые задания поделать. Полезно по крайней мере для твоей будущей зарплаты.
Чёт только сейчас заметил кучу сисек в этой вебм.
Кстати, насколько реально полезно выполнять эти задания на всяких codingame и прочих подобных ресурсах?
Ну.с кодварс я например начал чтото понимать. Решаю задачу как умею, разбираю топ ответ, офигеваю, следующие решения уже лучше с учетом предыдущего экспириенса. Плюс сохраняются задачи, если что то можно посмотреть решения или фичи, я например только так вдуплил как в кеях лямбду использовать и генераторы красиво юзать.
почему бы не добавить проверки в функцию download, вместо main
и хендлить ScriptError от функции download ?
Не могу говорить точно, но посмотри, с чего начинается/чем заканчивается файл, вдруг в этом закономерность есть. Ну и попробуй на досуге сравнить, что быстрее, хендлить исключения или открывать и читать какие-то там строчки из файла.
да есть. Можно прочесть header файла
И по возможности скинуть сюда результаты тестов. Всем будет полезно для общего развития.
Я хочу работать программистом-математиком.
Использовал Fortran и Maple
Стоит ли мне изучать Питон? Часто ли его используют для математических задач?
да пиздец как стоит. Можешь даже забить на фортран и мапл
тебе хватит питона. Унего ниебически большое научное сообщество. Гугль Анаконду
numpy и куча прочих математических библиотек как раз для таких аналитиков как ты! По сути пайтон можно использовать как встроенный в matlab скриптовый язык - те же массивчики с сырыми данными, те же 2-3 строчки для визуализации данных на графике...
>Можешь даже забить на фортран и мапл
Это само собой, фортран сейчас без сообщества, а мапл по сути большой калькулятор к которому я привык.
Спасибо!
>>67864
Погоди, то есть такой вопрос:
правильно я понимаю, что матлаб это написанный на питоне язык, который выполняет функции в целом аналогичные маплу и математике вольфрам, а питон это его встроенный алгоритмический язык, потому их и используют вместе?
Эмн... нет. matlab - это проприетарный пакет для математиков. Он имеет встроенный язык программирования для проведения научных/математических расчетов.
Пайтон может дать всё то же самое только бесплатно. Например, из того, что делал я сам - получаешь данные из БД, рисуешь на графике кривую по данным и сразу же вторую кривую - скользящую среднюю. Минимальное количество кода - максимум результата. Плюс если использовать jupyter notebook - можно работать с данным гораздо удобнее и нагляднее, вплоть до презентации своего подхода аудитории в реальном времени.
Понял, спасибо.
>Минимальное количество кода - максимум результата.
Да, визуально код хорошо выглядит, гораздо более читаемо чем кресты или ява.
Поставь перед собой задачу и после этого ищи инструменты для нее.
>неплохо знаю инглиш
Вот тут значит у тебя ошибка в размышлениях. Гугли все непонятные слова, записывай, заучивай.
мимо другой вкатывальщик, читаю все и документации и книги на английском, который знаю неплохо. никаких проблем
Анон, поставь себе конкретную задачу что ты хочешь написать и работай над ней. Для любого современного языка хуева гора примочек. Со всеми разбираться будешь когда на работе будет нехуй делать. Попробуй, например, написать на какую-либо вакансию "ололо дайте тестовое задание" и дадут тебе задание и будешь думать что тебе для него нужно.
дилетант_с_дивана
>какой-то хуй без опыта
>не хочет делать тестовое, потому что на желтом форуме сказали, что это зашквар и они украдут его джуниорский код в продакшен
Так можно выебываться только когда ты мидл и выше
А когда джун, нашедший работу по знакомству — то даже нужно.
Не правильный вопрос.
Он не медленный просто на других языках можно написать так что будет в разы быстрее, но чаще всего задача скорости работы не первостепенная, просто нужно чтобы она была в определенных рамках.
То есть получается, что писать оптимизированный алгоритм для вычисления какого-либо числа, например где нужно просуммировать ряд из стапятисот дохуя сходящихся функций на нём смысла нет? Почему его позиционируют как средство для математиков и инженеров? Смысл писать сложные численные расчёты на нём?
Тебе не нужно писать оптимизированный алгоритм для вычисления какого-либо числа.
> Почему его позиционируют как средство для математиков и инженеров? Смысл писать сложные численные расчёты на нём?
Потому что прост, синтаксис не высер уровня брейнфака и миллиард готовых библиотек под все нужны в говне моченых (следствие, но теперь и причина).
> Питон медленный
Он достаточно быстр для своих задач.
Это все, что тебе нужно знать на твоем уровне развития.
>>68168
Платиновая платина треда.
>это правда что Питон медленный потому что интерпретатор
Да.
>писать оптимизированный алгоритм для вычисления какого-либо числа, например где нужно просуммировать ряд из стапятисот дохуя сходящихся функций на нём смысла нет
Да. Прототип разве что катнуть.
>Смысл писать сложные численные расчёты на нём?
Сложные? Есть сложные, а есть критические по производительности. В основном это гейдев, где нужно кровь из носа за 10мс нарисовать целый кадр из пикселей. Так вот, критические по производительности — нет смысла. Сложные без разницы, питон разве что будет дольше считать. И то, при сравнении с аналогичными рассчётами на цпу в машинных типах данных (int8, float32, etc). Строковые операции например уже спорно.
>Почему его позиционируют как средство для математиков и инженеров?
Потому что есть много удобных библиотек. И там где нужна скорость всё написано на сишке. В питоне ты просто задания раздаёшь перелопатить вот эти три миллиона чисел вот так.
Медленный он потому что динамическое говно. Интерпретатор там не в большей степени, чем в джаве или дотнете — такой же относительно низкоуровневый байткод на стековой машине.
Однако, он не особо и медленный, потому что все перформанс-критикал библиотеки написаны в виде экстеншенов для сипайтона на языке C++, а питончик выступает к ним как бы интерфейсом. Поэтому и никому не нужен этот ваш PyPy — хоть питоновский код на нем и быстрее, экстеншены к нему не прикрутишь.
>>68168
> То есть получается, что писать оптимизированный алгоритм для вычисления какого-либо числа, например где нужно просуммировать ряд из стапятисот дохуя сходящихся функций на нём смысла нет?
Нет, смысла нет. Если для проекта на питончике это нужно и действительно надо быстро, пишется си-экстеншен.
> Почему его позиционируют как средство для математиков и инженеров?
Потому что numpy и scipy написаны в основном на си, а не на питончике, на гитхабе можешь посмотреть и убедиться.
> Это нормально, или пора выкидывать это все в MyAwesomeModule.py и пилить отдельный скрипт с import MyAwesomeModule.py ?
На твое усмотрение. Как начнешь этих в классах путаться, а сами они превратятся в спагетти-код, сам так сделаешь, как миленький.
>такой же байткод
Авотхуй. В джавах есть JIT, в (си)питоне нет. В питоне почти все опкоды, которые не ходят в стек делают полный лукап по строке.
>на языке C++
Авотхуй, на чистом си. Под modern C++ bindings не так уж давно вообще появилось хоть что-то сносное.
>никому не нужен этот ваш PyPy
Авотхуй, нужен и очень нужен. Но с экстеншенами таки да, плохо, там надо cffi и убирать refcounts.
при попытке открыть любой файл ( with open(self.filename, "rb") as fin :) без разницы из какой директории, даже с той же где скрипт лежит, даже спецом директорию создал на другом диске и тоже самое выдает, не понимаю что и где сломалось, ведь я ничего не трогал.
Зависит от протокола, в http, например в заголовках он есть
Но потом меня обоссали и сказали, что регрессионные методы уже давно известны, ты втёр нам старьё, Вася! Делай тоже самое, но только нейронными сетями! БЫСТРА! ОДНА СУТКА ВРЕМЕНИ ТЕБЕ!
ПОЭТОМУ, ПОДСКАЖИТЕ, ПОЖАЛУЙСТА, КНИГУ НА РУССКОМ, ГДЕ ОПИСАН КАКОЙ-НИБУДЬ ФРЕЙМВОРК ИЛИ БИБЛИОТЕКА С НЕЙРОННЫМИ СЕТЯМИ, ЧТОБЫ МОЖНО БЫЛО ЕЙ СКОРМИТЬ ТОЧКИ И ЧТОБЫ НЕЙРОННАЯ СЕТЬ НАРИСОВАЛА КОРРЕЛЯЦИОННУЮ ЛИНИЮ
Прошу книгу на русском, так как осталась одна сутка. Пока ищу, не могу найти. Вроде, задачу регрессии не принято нейронными сетями решать.
Сап змееусты, небыл тыщу лет. После длительной паузы взялся за изучение постгрескуля, появился вопрос.
Не получается привязать фласк аппликушу к локальной бд, переменная DATABASE_URL пуста. Помохите?
Добавь в свой сайт курсы переложение СИКПа на питон еще, он хороший
Хорошо
Понять что плоть слаба? Я тут пытался в пхп, не смог. Вспоминаю пистон и рыдаю ночами, какой он няшный.
Ну на яве я много работал в свое время, а пайтон больше для админских автоматизаций сейчас использую. И вот ооп в яве такое простое и понятное, а в пайтоне как-то не очень...
почему админишь именно на Питоне? Почему не на баше? Питон хорош для админинга? Что примерно делаешь?
>Он достаточно быстр для своих задач.
Ну ты понимаешь как это звучит.
Если мне понадобится быстрый модуль то писать его возможно придётся на чём-то другом. Впрочем, попробую сравнить в ближайшее время.
>>68179
>В питоне ты просто задания раздаёшь перелопатить вот эти три миллиона чисел вот так.
Я понял. В Питоне можно использовать разное число знаков в десятичном представлении числа? ну там 50, 100, 200?
Спасибо.
Пайтон удобный очень - куча модулей для работы со всем на свете. Плюс на нем написан ансибл, а т.к. ансибл от релиза к релизу глючный - приходится патчить его исходники под себя немного. В основном же занимаюсь управлением сетевыми устройствами.
Крут, я вот вообще в ооп не въехал. Правильно я написал класс, или нет, что откуда наследуется ппц вообще
В ВУЗике ООП читали на основе плюсов. В целом концепция была понятна, но вопрос "НАХУЯ ВСЁ ЭТО?!" у меня оставался безответным до серьезного погружения в java. Сейчас, пишу на пайтоне и понимаю, что базовое знание ООП тут нужно разве что для разработки на фляжке/джанго. В остальных случаях оно скорее вредно, потому что реализовано, скорее, для галочки, чем как какая-то фундаментальная парадигма. Возможно, я просто не умею готовить ООП в пайтоне. Но... тут всё равно ведь нет ни интерфейсов, ни полноценного private модификатора видимости...
>их def утверждения будут выполняться при запуске каждого нового треда?
Нет. Определение класса обрабатываеся один раз при запуске/импорте модуля. У них у всех общая память.
https://repl.it/repls/PointlessOvercookedKeyboardmacro (если бы def обработался заново, то и список обновился бы.)
a > 5 and a < 10
X>5 and X<10
5 < x < 10
в файле вот такой код
a = int ( input ())
print (a 2 )
когда запускаю файл выходит синтакс ерор инвалед синтакс
Почему не запускается?
Блин, я тупой у меня пена из рта от злости я криво написал, вот читай это
Я создал текстовый документ test.py вот с таким кодом
a = int ( input ())
print (a 2 )
В командной строке я запустил питон(пакетный режим), хочу запустить этот текстовой документ с кодом. Я написал python test.py, но вышло SyntaxError: invalid syntax
Бля, между а и 2 стоит возведение в корень, а то есть две звездочки, почему они не отоброжаются
ты правда тупой, что ты хочешь сделать вообще?
a = int(input())
print(a)
или
a = int(input())
print(a, 2)
или
что вообще?
это необучаемость блять
ВТОРОЙ РАЗ ПОВТОРЯЮ КИНЬ КОД
>Свой код кидайте через https://repl.it/languages/python3
ну блять просто же прочесть при входе в факе
Единственное, что не отобразилось в коде, так это две звездочки между а и 2
Вот что я хочу сделать
2.2 Пакетный режим работы
Теперь запустим Python в режиме интерпретации файлов с исходным кодом
(пакетный режим). Создайте файл с именем test.py , откройте его с помощью любого
текстового редактора и введите следующий код:
a = int ( input ())
print (a тут должны стоять две звездочки 2 )
Эта программа принимает целое число на вход и выводит его квадрат. Для
запуска, наберите в командной строке
> python test.py
print (a (между буквой а и двойкой должны быть две звездочки, почему это программа не запускается) 2 )
Сколько ставить таймауты на сокеты? В учебнике автор дает 100мс, я с барского плеча сразу целую секунду даю. А сколько надо? И почему у сокетов можно кинуть таймаут сразу всем функциям через .settimeout()? То есть если я хочу, чтобы в разных случаях сокет ожидал разное время, мне нужно перед каждым использованием кидать эту функцию? Или такое на практике просто нигде не используют и потому сделали один таймаут на всех?
a = int ( input ())
print (a 2 )
В командной строке я запустил питон(пакетный режим), хочу запустить этот текстовой документ с кодом. Я написал python test.py, но вышло SyntaxError: invalid syntax
Между "а" и "двойкой" должны быть две звездочки, там где принт
Да. Еще будешь по 200 раз перечитывать одно предложение. Начал бы с сицпа!
> То есть если я хочу, чтобы в разных случаях сокет ожидал разное время, мне нужно перед каждым использованием кидать эту функцию?
А если в декоратор обернуть?
Алсо, что читаешь? Тоже хочу про сукеты почитать!
сука, сколько ты ещё раз одно и то же в тред запишешь? Модератор, забаньте дауна, пожалуйста.
Насчёт твоей проблемы: ты не там пишешь python test.py. Это нужно писать в командной строке, а не внутри интерпретатора. Ты сейчас вводишь python, попадаешь в в интерпретор, и потом ещё раз пишешь python test.py. Именно в этой строке синтаксис эррор, а не в твоём файле. "python test.py" нужно писать там, где ты просто "python" писал.
А теперь уходи, а то предчуствую следующие твои вопросы и становится плохо.
Я изначально все вводил в командную строку. По твоему совету я написал просто название файла без "python", у меня вышла такая ошибка indentationError: unexpected indent
Пока ничего. Просто, например, в threading модуле на любой блокирующий вызов типа ожидания замка можно поставить его личный таймаут. Не понимаю, почему у сокетов не сделали так же.
>>68590
Кстати можно, не подумал об этом.
Обычный Programming in Python 3, Summerfield и документацию.
Может кто ещё объяснить мне задание лол из книжки. Пикрил. Задание о создании сервера, клиента и обмене между ними информацией, переведенной в байты через pickle.dumps. Зачем передавать друг-другу протоколы упаковки? Я сначала подумал, что это для того, чтобы распаковать обратно, но перечитал документацию, и там сказано, что pickle сам определит протокол и откроет по нему. Так что автор от меня хочет?
Кстати о тредах. Почему замки называют... замками? Типа с ключем было бы все понятно - тред взял ключ и заперся с shared data в комнате, пока ключ не отдаст другие ничего не смогут ничего с этой инфой сделать. А с замком? Ну взял он себе какой-то навесной замок и че бля?
Есть еще одна, Core programming in python
Да, я про это. Ну замок не в смысле здание огромное, а как навесной замок, ну знаешь, хуюнишки такие на цепях висят или в двери вмонтированы.
>Я изначально все вводил в командную строку.
Нет, не туда ты это вводишь. Ты и сам подтвердил это словами
>я запустил питон
И затем
>ввожу python test.py
>у меня вышла такая ошибка indentationError: unexpected indent
Питон указывает и цитирует строку, где была ошибка. Скриншот в студию.
Там стрелка указывала на название файла, ничего больше там не было. Щас пишет другое
NameError: name "test" is not defiend
Короче, иди нахуй, ты тупой, вгаоны лучше разгружай. Я тебе уже ответил, в чём твоя проблема. Если стрелка указывает на имя файла, зачем ты в интерпретаторе это имя файла ввёл, а не командной строке (терминале/павершелле). А ты даже скриншот сделать не может.
Я чисто физически не смогу разгружать вагоны, я все равно долго жить не буду, зачем мне это.
Вот скрины
Написав в комстроке python ты запустил интерактивный режим. И в нем ты вводишь название файла, а он не понимает хули ты доебался до него, тк команды test.py в пайтоне нет. Тебе надо написать в комстроке python test.py
Ты все еще делаешь это в интерактивном режиме. Об этом свидетельствуют значки >>> слева от ввода.
Сам код хоть правильный?Нормально что я пытаюсь запустить документ блокнот с этим кодом?А в каком режиме нужно запускать?
П.с. другой анон.
Бляяя.... я не могу.... хаах... Сижу реверсю одну ебу, дай думаю на двачик зайду..
Анончик:
1. набери exit(), чтобы выйти из интерпретатора пайтона.
2. перейди в директорию с твоим скриптом. (п.с. все это нужно делать в терминале, это такое черное окно), чтобы перемещаться по директориям в терминале используй команду cd.
например: cd C:/Users/дома/папка_где_лежит_твой_скрипт
cd C:/
cd C:/Windows
ну ты понял, надеюсь...
3. Теперь вводи в терминал
python test.py
Если выдается ошибка, значит ты что-то делаешь не так. Начни с основ, узнай что такое компуктер, что такое процессы, файлы, файловые системы, терминалы, пользователи, переменные окружения и т.д. И потом только возвращайся на этот форум...
Код правильный. Лучше набирай код в сублайм тексте хотябы. Или notepad++. Вот гляди. Ты сперва запустил просто python, и залез в интерактивный режим, теперь надо тебе из него выйти, нажав ctrl+z ztrl +d или еще какую хуету, я не знаю. Или закрыть нахуй окно и открыть снова. А потом уже вводить python test.py в одну строку
Тупль же харнит ссылки на обьекты внутри себя. Ну меняешь ты сам обьект, но ссылка на него не меняется!
Да по факту мелочь: автоматическое текстовое изменение пары файлов конфигурации, которые девы выкатывают в одном виде, а в них нужно потом ручками ковыряться, исправляя пару параметров тут и там. Поскольку исходники всегда одинаковые, изменять требуется всегда одно и тоже (ну, или почти всегда — для отдельных моментов я пару if-statement'ов запилил). Но сколько я нового узнал чисто по этой задаче, просто охуеть.
Прям смотри, даже конспекты делай коротеьнкие
>cs50
Ебать, а когда я спрашивал что можно послушать/посмотреть пока хожу по улице/качаюсь мне ничего не ответили. А есть ещё что такое, что можно слушать/смотреть пока занят какой-нибудь бездумной рутиной? cs51? cs52?
Блять, что это, нахуй? Что это за пиздос? Почему, блять? Как? Кто-нибудь может объяснить, что он вытворяет? Он ебанутый что ли?
>А есть ещё что такое, что можно слушать/смотреть пока занят какой-нибудь бездумной рутиной? cs51? cs52?
Можешь включить аудиокнижку про Петра и Февронию
>А есть ещё что такое, что можно слушать/смотреть пока занят какой-нибудь бездумной рутиной?
Dive into Python в голосовом исполнении Сергея Безрукого. Идеально просто: воткнул наушники перед сном, лег спать, а с утра уже можешь на собеседование идти и запрашивать 150к/месяц.
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
бигдата? Еще java придется подучить все-таки
Для всего этого нужно знать английский?
Да нет, он быдлом был, он не был гением, я его с первого класса знаю. Ну посоветуй что делать тогда, если такой умный.
Посоветую почитать шапку.
:( крутой
Перепиши This is the police так, чтобы она не лагала пиздец блять, двухмерная игра, как ее создатели уебки смогли сделать ее такой требовательной. они бля специально пытались создать неоптимизированное говно?
Я все перерыл в гугле, все перепробовал.
Там везде пишут типа от админа запускай, проверь есть ли права на папку и прочее. Я это уже давно сделал и все равно не работало.
Пришлось к чертям все снести и заново поставить и тогда почему-то снова все заработало.
Хостинг картинок, который будет не позволять загружать одинаковые или почти одинаковые картинки (хэш).
Изи же, сохранение кэша в редис и в базу + проверка на вхождение в редисовское множество при попытке загрузки
Напиши для начала революционный алгоритм сжатия данных без потери качества.
Ну или можно просто кластер из двух редисовских нод заделать, и проверять и хеш даже в базу не закидывать, ОПТИМИЗАЦИЯ
Ну да, лучше хеши, руками из базы данных рукам проверять, хорошо будет базе на 1кк картинок, даже индексированной
Лучше самописная
И как ей перемножить элементы списка в одну строчку? Инб4 лямбда.
Зависит от длины хеша, и соответственно от функции хеширования, завтра тест для треда запилю с генерацией 1кк рандомных значений, занимаемой памятью и скоростью чтения
Но в любом случае это гораздо выгоднее, чем делать запрос в бд, потому что она просто ляжет нахуй от таких запросов, память и докупить можно, в отличии от ограниченной скорости диска
> завтра тест для треда запилю с генерацией 1кк рандомных значений, занимаемой памятью и скоростью чтения
Результаты сюда постить будешь?
> Но в любом случае это гораздо выгоднее, чем делать запрос в бд, потому что она просто ляжет нахуй от таких запросов
Так реляционные БД на это и рассчитаны. Плюс возможности самой БД в этом плане тоже зависят от RAM.
Да, сюда
Ну то есть ты докупаешь память, что бы её сожрал уже не редис, а бд? Причём это все равно не даст и сотой части той производительности, что даёт тебе редис
> не даст и сотой части той производительности, что даёт тебе редис
Никогда не видел/проводил сравнения с редисом (почему именно редис, кстати?), а с бд в скором будущем работать придется. Надо будет выдержать примерно 300 одновременных запросов к БД.
Редис, потому что одно из самых популярных, поддерживаемых и быстрых хранилищ, а тарантул я не трогал пока ещё и в ближайшем будущем вряд ли буду
https://gist.github.com/NateBarnes/3001890
Вот тест небольшой на запись/чтение
Можешь кстати его заюзать, как сессионный менеджер
Прочитал немного в гугле. В общем, это как БД, с теми же записями/запросами?
Просто там еще нужно разворачивать сервер редиса, а я с простой БД пока что этим не занимался. Но думаю, если способ с БД не пройдет, переключусь на это.
> Можешь кстати его заюзать, как сессионный менеджер
Я вообще не знаю таких определений.
Не с теми же, во-первых, оно не реляционное, во вторых, свои типы данных и цели у него несколько иные
>я с простой бд пока что этим не занимался
Если ты джун и работаешь в команде, то это тебя в меньшей степени касается, т.к. проектировать ты вряд ли будешь, но рекомендую ознакомится с этим для развития
https://losst.ru/malenkaya-kniga-o-redis
> оно не реляционное
Это плохо.
> цели у него несколько иные
А какие, если вкратце?
> Если ты джун и работаешь в команде, то это тебя в меньшей степени касается
Я вообще к программированию прямого отношения не имею, но пока особо работы нет, я с начальником начинаем творить всякие непотребства. Сейчас у нас в планах такая хуйня, как обращение большого количества компьютеров к базе.
> но рекомендую ознакомится с этим для развития
Схоронил, спасибо
Хранение сессионных данных, кеширование, бд для маленьких приложений (или даже для больших, если ты гуру https://habrahabr.ru/post/178525/), промежуточные данные для больших вычислений, хранение всяких флагов/чисел к которым нужен быстрый доступ и запись (опросы, лайки, просмотры в вк)
Понял, спасибо за ответы. И доброй ночи, а то черед 6 часов вставать.
Теперь хотят порт под винду. Питоновские части не пользуются никаким говном платформозависимым (типа termios) и завелись сразу. А вопрос у меня про расширения на Си.
Как это лучше делать? Мне обязательно ставить себе винду и vc++? Получится обойтись виртуализацией типа KVM? Какие подводные (например, нужно ли будет включать в пакет стандартные библиотеки си рантайма)?
Пока я накатил wine+python27+mingw, собираются с mingw и статической линковкой заебись, работают нормально, но это жи только 2ой пистон и только 32-бит, т.е. не сегодня-завтра оно и не надо никому нахуй будет, а надо 3ий и 64-бит, а этого в wine не завезли.
>собираются с mingw и статической линковкой заебись
Хотя как "заебись", херово вообще-то, пришлось пилить отдельную альтернативу setup.py, тоже, в принципе, херня кустарная, добавил расширение - не забудь включить и в setup.py и в setup_mingw.py, фубля.
Я такое в виртуалбоксе собирал. Правда у меня там иначе никак, целевая говняшка работает только под виндами, даже под вайнами падает. В целом всё ок, пишешь под линуксами, переключаешься на виртуалбокс, собираешь, тестируешь. Главное правильный компилятор выбрать под версию питона.
Краткий тутор по sql. Индексы, внешние ключи, один к одному, один ко многим, многие ко многим, разобраться с джойнами, субкверями, агрегацией, оконными функциями, триггерами, хранимками итд итд.
Реляционную алгебру на потом оставь, там чистая теория, которую полезно почитать когда тебе захочется осознать реляционные БД более глубоко и какими они задумывали и должны быть.
Так-то субд могут быть очень разными, это не только реляционные. Можешь с монги вообще начать, она простая как три копейки но и такая же ограниченная в возможностях, транзакции и констрейнты ой как нужны.
import operator
from functools import reduce
def product(iterable):
return reduce(operator.mul, iterable, 1)
Теория баз данных гугли крёнке
Проектирование баз данных
Администрирование баз данных
По крайней мере нам в вузе в таком порядке преподавали.
>Проектирование баз данных
>Администрирование баз данных
Поздравляю, теперь ты человек-оркестр, которому будет рад любой малооплачивамый бизнес, но учти, что в крупной компании, этим будешь заниматься не ты, а специальный человек.
Виктор Данилович Кренке (1816—1893) — военный инженер, участник русско-турецкой войны 1877—1878 гг., генерал-лейтенант, писатель в области сельского хозяйства.
Дурацкая шутка, извинтие
Если что, я уже создал текстовой файл, как написано в учебнике и написал туда код из учебника(второй скрин).
А я проектировщик ИС по образованию. И что плохого в этой последовательности?
Тебе анон про путь не просто так написал.
Файл test.py в какой директории находится то? Зайди в нее через команду cd и запускай там. Или укажи после python до файла абсолютный ПУТЬ: C:\users\дома\huipizdazalupa\test.py
Он находится на рабочем столе. Как я понял, там сначала нужно указывать путь к самому интерпретатору пайтон. Как это сделать?Я много чего накачал как в учебнике написано, не понятно какой путь нужно указать, там много файлов где пайтон написано, они лежат в совершенно разных мечтах, тем более у меня виндовс 10, там вообще нихуя не понятно.
Да, ахуенный совет блядь.
Запускай так:
C:\users\дома> python Desktop\test.py
или так:
похуй где> python C:\users\дома\Desktop\test.py
Почитай в гугле где-нибудь про абсолютные и относительные пути в файловой системе. Ну и да, win10 не лучший вариант, т.к. в одном месте папка называется "Рабочий стол", а в другом "Desktop"... Вариант с использованием linux тебе всерьез стоит рассмотреть - ведь в нем без командной строки никуда, а для пайтона знать командную строку всё равно нужно.
Чувак, тебе что 8 лет? В гугли ищи!
Автоматизировать админские задачи, парсить сайты скачивания пачками картинки голых школьниц или идти в другой язык, очевидно.
> Автоматизировать админские задачи
Под окна что вкуривать, например? С psexec под обычным os полет нормальный. Но что дальше?
Сейм щит. После более детального изучения языка понял что мне ничего кроме как автоматизировать процессы не остается. Но все-таки навык программирования на самом языке питоне я подтяну, а потом, скорее всего в яву и андроид.
Ну а что ты вообще делать-то хочешь, зачем ты начинал питон изучать? Если нет никаких идей, то и в другом языке потом встанет тот же вопрос. "В веб не хочу, энтерпрайз парашу писать не хочу, микроконтроллеры программировать не хочу, базы данных обслуживать не хочу, про монады даже слушать не хочу".
Полагаешь, в адроид устроиться полегче будет?
Там ведь еще скорее всего потребуется айОС знать и к немуЯП
Начал изучать в качестве первого языка программирования, ещё слабо представляя, что для чего используется.
Прошу помощи тут, так как сам уже заебался, все что пробую не работает.
Дано:
В конфиге лежит время начала ежедневного ивента (в разных допустимых форматах). Его надо перевести в unix time;
Как я это вижу:
Нужно выковырять текущую дату (YY:MM:DD 00:00:00) с учетом моей локали. Перевести ее в unix time и прибавить то, что лежало в конфиге (уже приведенное к секундам прошедшим с 00:00:00);
На моей машине получилось сделать. На сервере .timestamp() возвращает совершенно другое значение.
Хули делать?
print(os.path.join('C:', 'Users', 'User')) возвращает C:Users\User? Это бага Питона? Не может же быть, чтобы такой путь был валидным, правда?
Чтобы выдало путь C:\Users\User, мне приходится писать print(os.path.join(r'C:\Users', 'User')).
Уебанская хуйня какая-то.
это ты уебан
Note that since there is a current directory for each drive, os.path.join("c:", "foo") represents a path relative to the current directory on drive C: (c:foo), not c:\foo.
datetime.fromtimestamp(datetime.utcnow().timestamp() + время, которое нужно прибавить в миллисекундах) и полученное корректируешь в зависимости от своей локали
В общем, ладно. Приму за аксиому, что это очередной костыль языка уровня запрета окончания слова в кавычках на слэш.
Работает, спасибо, аноний.
Подключил пердуину к юсб. Видает мне раз в минуту пикрелейтед. Мне же нужно только флоат значение. Т.е.
на входе пикрелейтед на выходе:
26.70
26.60
26.60
Если ты вот этот уникум >>69111, то -
Создаешь текстовый файл
Пишешь туда те строки
Переименовываешь файл в zaloopa.py
Пишешь в командной строке "ПОЛНЫЙ_ПУТЬ_К_ПИТОНУ ПРОБЕЛ ПОЛНЫЙ_ПУТЬ_К_ЭТОМУ_ФАЙЛУ" (без кавычек, и пробел - это пробел)
И все.
К слову, откуда желание заниматься этим? Ты за компьютером точно работал раньше?
Что-то разве не так?
Ты гений, чувак. Я никогда не думал, что троллинг тупостью может выйти на такой уровень. Аплодирую стоя.
Знания примерно на уровне 9-10 класса + дискретку чуть чуть знаю.
Если да , то посоветуйте пожалуйста годных курсов/литературы
Лол, нет. Я ушёл немного дальше. Где-то на месяц от того уникума. Я тот кто бота в телегу писал, хз видел меня нет. Просто я вроде чем-то занимаюсь, но как-то не чувствую что развиваюсь. Кроме этого бота нихуя не написал за месяц (или больше). Сейчас по совету одного анона здесь пытаюсь в него mongodb встроить. После этого наверное посмотрю на postgre, ибо все вакансии что есть в моей мухосрани требуют знание хоть какого-нибудь sql диалекта.
Хотел заниматься изначально DataScience, не потому, что модно, а потому что в восторге от возможностей математики, всегда считал её магией или читом ирл, но т.к. живу в мухосрани получить опыта в этой теме не выйдет. Поэтому пока что поплыву по течению ради опыта:
BD
джанго раскрепощённый
flask
И что там ещё было в картиночке "Что нужно для джуна python в 2017".
Просто мне нужна ЭФФЕКТИВНОСТЬ! из двух недель я не могу заниматься программированием ттолько 3 дня. Остальные могу посвятить не менее 6 часов (хотя с ночных смен иногда приходится спать).
Для общего развития и развития абстрактного мышления в частности.
Анончик, потихоньку осваиваю Питон для личных нужд, понравилось, что в стандартной библиотеке есть диалоговое окно ввода из модуля turtle (чтобы не в скрипте изменять данные или не вбить инпуты через командную строку), но оно вызывает лишнее окно рисования и вообще слишком простенькое.
Планирую осваивать уже создание полноценного окна с выбором чекбоксов, радиокнопок и полей ввода. Я так понимаю, для этого нужно подключать PyQt5 и изучать уже его, да?
А еще вопросец такой: если я не хочу сливать несколько скриптов в один, чтобы не загромождать его, можно как-то сделать, чтобы при вызове главного скрипта по ходу действия вызвались дополнительные? Подозреваю, что можно, но тогда требуется ли в этих дополнительных скриптах повторно прописывать импорты, дефайны функций и переменные, если они и так есть в главном скрипте?
Далеко не обязательно сайт, про django я просто так сказал, к слову)
Хз, интересно пилить игори, как по мне. А полезно - какой-нибудь софт. Например, чтобы в Стиме при попытке зайти на игру 18+ он бы не запрашивал каждый ебаный раз твой возраст.
А можешь мне помочь с технологиями, ну для старта хотя бы. Просто фраза "Читать все книги" безусловно правильная, но так ничему и не научишься сто лет будешь учиться хер пойми чему. Вот, например, чтобы такую фигню со Стимом написать, что надо?
Да и просто, что нужно, чтоб работку найти, хотяб бичевскую.
Знаю как ботов для ТГ писать, RESTful, django на начальном уровне, OpenCV тоже так, средненько, сейчас буду учить как парсить всякие сайтики на питоне.
>например, чтобы такую фигню со Стимом написать, что надо?
А я откуда знаю? Ты идею просил, я подкинул.
Можешь попробовать автоввод при открытии этой страницы.
>чтоб и интересно и полезно?
Сделали же вам, молодёжи, github, bitbucket и иже с ними: есть внятные задачи (как баги, так и фича-реквесты), есть польза для компьюнити, есть опытные кураторы, есть отлаженная система, не дающая наступить на ряд популярных граблей.
Нет, не хочу, хочу делать миллионный тетрис и аски-змейку. Деды так делали, и я так хочу, хочу быть как дед.
Дед плачет, что в его время не было таких возможностей участия в опен-сорце, как сейчас. Потому иди, найди молодой проект, чтобы тебе было хотя бы отдалённо интересна тематика, разберись со структурой, выбери issue и пили пулл-реквест.
Куда сядешь куда мать посадишь? Ну то есть, во второй явно могут потенциально производиться кучи ненужных проверок. Даже если не было дано дефолтное значение или набор верных значений, всегда будут идти проверки на них (if default, if valid). А в первом случае такого нет. Но сама функция выглядит вроде как сложнее. Что из этого выбрать? Как бы вы написали на работе?
Однозначно 2ой вариант.
И ещё короти, типа https://repl.it/repls/YawningGrizzledBlogs
>Rule of Economy: Programmer time is expensive; conserve
it in preference to machine time.
https://arvimal.blog/
Удваиваю! Почему-то в хипсторедакторах на электроне из коробки всё заебись, а переключить и скачать тему проще чем запустить код на выполнение. Почему в пичарме этому уделено так мало внимания непонятно. Собственно, отказался от пичарма от части по этой причине.
У тебя логика изменилась: если заданы и valid и default, которого нет в valid, то ты не примешь default. Я не говорю, что это неверно, но в изначальной редакции поведение было другим.
Пилю себе парсер цен. Хочу чтобы скрипт красиво выводил "цена на розовую дилду стала ниже, для снижения цены потребовалось X дней". Как лучше считать этот X дней?
> Pyparsing 2.x supports Python versions 2.6, 2.7, and 3.x. If you are using Python 2.5 or older, you must specifcally install version 1.5.7.
Что это вообще значит? Написано же, что Pyparsing 2.x поддерживает Питон версий 2.6, 2.7 и 3.х. И потом написано, что если я использую любую из них, то мне надо ставить 1.5.7. У меня вроде с англом нормально но это не понимаю. Почему мне надо ставить 1.5.7 для моего Питона 3.х, если Pyparsing 2.0 поддерживает 3.х ?
Я хотел сказать, что ты блять охуел, и когда писал перевод по строчкам кажется понял. older это же старше, типа для питона 2.5 и старше сука т.е. 2.4 и т.д. вниз нужен старый PyParsing. Спасибо. Наверное. Иди нахуй.
Я об этом думал, да, но иметь дефолтным значение не из valid это как-то ниочинь: ведь в скобочках у промпта будет выведен этот дефолт, а если ты его руками напишешь, то тебе как хуём по губам: "неверный ввод!". Так-то да, ты прав, немного поведение изменилось, но зато код на две строки короче!
сап питонычи
есть вопрос по джанго:
я за небольшой промежуток времени собрал из говна и палок небольшой интернет-шоп и хочу прикрутить туда возможность смены валюты на товаре. То есть по дефолту у меня в моделье есть цена в нативной валюте, а допустим потом я хочу ее поменять и на всем сайте это уже, допустим, доллары и заказ оформится для долларов. Как это правильней всего сделать?
При создании товара продаван должен указать цену продукта в нескольких валютах,имхо.
Ну или ты должен указать курсы валют в можете какой и потом пересчитывать цену, в зависимости от выбранной валюты юзером.
Анончик, чего накатывать в виртуалбоксе?
Это ад какой-то, второй день ебусь, пиздец блядь, мой анус уже радиоактивным пеплом станет скоро.
Поставил спермёрку, накатил Visual Studio 2017 Community (Microsoft.VisualStudio.Workload.NativeDesktop и .Python), накатил Python 3.5.3 amd64 (целевая платформа) -- эта сука говорит "не вижу vcvarsall.bat". Сайт МС говорит, что 2017 должно быть достаточно. Нихуя не понял.
Ладно, похуй, поставил для 2ого VCForPython27, с 32-бит та же хуйня (vcvarsall.bat???), но ВНЕЗАПНО 64-бит запустилося, собралося, только с включенным OMP (-openmp) не запускается (пикрил, блядь, чего оно от меня хочет, сука?! 2к18 на дворе, тварь, почему ты не можешь в юникод?!), без него работает.
Т.е. в итоге после полутора дней ёбли не дотянул даже до того, что имел с wine+mingw.
Ананасы, как вы это делаете? Как вы собираете нативные расширения под винду? У меня ещё, кстати, не используются всякие PyMem_malloc и прочее, т.е. мои расширения не зависят от ABI, по идее, потому и использую радостно статическую линковку и всё заебись работает на куче самых разных линуксов; а в винде (на стаковерфлоу) мне говорят, что надо собирать и линковать с тем рантаймом, с которым собирали пистон на целевой платформе, чего за беспредел, неужели статически нельзя слинковать?
Алсо, окончательно проиграл с этого:
>The issues surrounding Python packaging are some of the most complex in our industry right now. Versioning is difficult, dependency resolution is difficult, ABI compatibility is difficult, secure hosting is difficult, and software trust is difficult.
Ну охуеть теперь, три Дебиана, четыре Убунты, СентОС, фря, хоть x86, хоть amd64, хоть arm -- всё работало как часы из коробки, а вот ишь ты, оказывается, всё сложно пиздец как, ну как бы я жил без винды, прозябал бы во тьме неведения.
1) Он подходит для готовых но простых программ? Или это чисто учебная штука и для любого serious shit надо обязательно PyQt осваивать?
2) Как чуваку, который хочет вкатиться в бекэнд мне вообще надо особенно сильно об этом заморачиваться? Или прочитаю документацию по tkinter и tk/tcl и можно забить?
1. подходит, особенно если "для себя" и есть гарантия, что не будет очень сильно расти проект
2. достаточно даже не знать, что tkinter существуют
Очень реально, даже я вкатываюсь, а я не только о программировании понятия не имел, но даже информатику в школе прогуливал.
в смысле там можно находить проекты, по которым разработчики просят коммюнити помочь что то дописать или исправить ?
Если да то как такое иискать ?
Да, фильтруешь проекты по интересующим признакам (python etc.), сортируешь ну скажем по росту популярности за последнюю неделю/месяц, находишь что-то тебе близкое иипонятное, смотришь как живо идет процесс разработки, залезаешь в issues, ищешь чего мог бы сделать, делаешь, создаешь pull request, дальше разработчик его смотрит, говорит чего не так, потом принимает, а если даже и нет, то все равно тебе +экспа.
В матерых проектах часто есть раздел в readme "Contributing" или отдельный файл типа https://github.com/scipy/scipy/blob/master/CONTRIBUTING.rst
Эх, блджад, где мои 17 лет, хуярил бы сейчас в сайпай или астропай топовые научные статьи: сразу ингриш, нОука, си, питон, гит, сфинкс, латех, смаке и еще и с интересом... А я пердун, который свое говно под винду за выходные скомпилить так и не смог, ебаный стыд.
$path1/script1.py
```
spec = importlib.util.spec_from_file_location("module", "$path2/script2.py")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
module.foo()
```
$path2/script2.py
```
from script3 import bar
bar()
```
$path3/script3.py
```
bar()
```
ImportError: No module named 'bar'
Всё, нашёл.
Хуле щас не хуяришь?
Гугли Celery. Там вроде можно и статус чекать, но скорее всего придется в несколько тасков запускать парсинг.
Перепиши его на жс. Так будет лучше.
pipenv - надстройка над virtualenv
Нормальные пацаны юзают контейнеры, для каждого отдельного проекта
Ебись с алгоритмом, который сравнивает цены других товаров.
Два раза пытался попробовать — оба раза крешилось сразу же, на первой же команде. Говно.
> статически слинковать
А, ну это тебе к pyinstaller петухам. Так бы сразу и сказал.
> надо собирать и линковать с тем рантаймом, с которым собирали пистон на целевой платформе
Да. Я тебе об этом и говорил. Нужен не 2017-мокрописьки эдишен от васяна, а прицельно нужный пакет с компилятором. Далее ебашишь xml конфиг проекта (вот только ради этого может понадобиться студия по большому счёту) и собираешь через msbuild.
> Как лучше считать этот X дней?
Вычесть из сегодняшней даты дату прошлой записанной цены (относительно которой она снизилась), очевидно. В чём твоя проблема?
А что не так с pyinstaller?
Qt нужен, tkinter старое гавно
>нужный пакет с компилятором.
Вот нахуя, если я не пользуюсь питоновской кучей?
А vcredist в каждой второй проге или десятки копий msvcr90. dll на машине это не петуханство?
Алсо, нашел ноут с вин10 и все собралось, хотя OpenMP так и не работает, я знаю, что там багов полный рот вплоть до vs10 включительно, так что забью, пожалуй, да и это уже не в этот тред. То ли вин7 паленый, то ли виртуалбокс не едет.
>>1170797 (OP)
>>1170797 (OP)
>>1170797 (OP)
>>1170797 (OP)
>>1170797 (OP)
все предложения оставляем в гудрайве на сайте из шапки
Допустим, у меня есть 10 параметров и задача. Для решения задачи нужно построить формулу из этих 10 параметров. Правила её построения есть, но как это реализовать в коде? Не хочу делать 200 строк всяких ELIFов. Должен же быть некий "красивы" подход. >>64614 (OP)
ИРЛ пишу нейронку-автопилота, с тестированием в KSP (потому что нет шекелей на квадрик)
http://mexuaz.com/opencv-machine-learning-03/
Код написан на Tensorflow 1.2/Keras 2.0.5
Я хотел взять ту же задачу, распараллелить её и выполнять в полотора-джва раза быстрее на нескольких ядрах. Я стал искать как же в Tensorflow/Keras делается параллельность на нескольких ядрах и нихрена не нашёл, нашёл только про подрубание GPU видеокарты.
Насколько мне показалось, в Tensorflow/Keras автоматически используется параллельность ядер.
НО! Узнать об этом точно у меня не получается, так как у меня всего два ядра. Я взял PyCharm в котором у меня код программы на Tensorflow/Keras, и в диспетчере задач отрубил второе ядро, оставив только одно. И эта программа на Tensorflow/Keras выполнилась вдвое медленнее.
ПОЭТОМУ Я ХОЧУ СПРОСИТЬ, ПРАВИЛЬНО ЛИ Я ПОНЯЛ, ЧТО В ПРОГРАММЕ НА Tensorflow/Keras АВТОМАТИЧЕСКИ ИСПОЛЬЗУЮТСЯ ВСЕ ДОСТУПНЫЕ ЯДРА ДЛЯ УСКОРЕНИЯ НЕЙРОННОЙ СЕТИ?
1. А почему ты не попробуешь многопоточность через threading? На хабре есть подробный гайд по многопоточности в питоне.
2. Тебе стоит немного почитать о своём процессоре. Например в i3-7100 физических ядер только два, а виртуальных аж 4 (то есть (12)+(12)). Количество потоков получается достаточно большим, а система резвой. Потому что, я в крайней мере сомневаюсь в возможности отключения одного из ядер CPU вообще. Этож блять нонсенс! Всё равно что половину микросхемы или транзистора отключить.
Хотя должен сказать. Я немного тобой восхищаюсь, ибо всё ещё не могу в тензор :с
Вот, например, функция отвечающая за манёвр причем, в любом измерении, на любом ЛА, она одинаковая. В зависимости от изменения параметров, меняется форма кривой.
Я пишу простейшую нейронку, которая могла бы анализировать мой полёт и представлять его в виде набора однообразных манёвров т.е. по одной функции с разными параметрами. Это, фактически, будет обучением с учителем.
Но забегая немного наперёд возник вопрос: а что делать если ЛА потребует более сложных функций, чем просто "скат"? Например, в начале или в конце манёвра на графике это места, где кривая переходит в горизонтальную линию, может быть болтанка, которую нужно будет ослабить. Для этого нужно прямо в функцию включить синусоиду, в нужных местах. Чтоб этого достигнуть, нужно дописать в функцию переменные и параметры, которых на момент запуска программы просто нет. Вот тут и возникает вопрос — как это сделать?
Сорри что пример не в коде, у меня пока с трудом идёт адаптация всего этого в программу.
Да, используются все ядра. Тензорфлоу строит граф вычислений, который независим от железа. Это слишком абстрактно для решения одной конкретной задачи, если ты ее хочешь сделать полностью сам.
>>70983
>А почему ты не попробуешь многопоточность через threading?
Через потоки ускорять вычисления не получится из-за GIL. А вообще, Keras имеет намного более высокоуровневый интерфейс, и вопросы с ядрами и потоками решает без постороннего вмешательства.
> Потому что, я в крайней мере сомневаюсь в возможности отключения одного из ядер CPU вообще. Этож блять нонсенс!
Такое вполне вероятно. ОС может перестать задействовать ядро в планировщике задач и отключить ядру питание, насколько это позволяет модель процессора. Подобные режимы сна - не редкость, особенно для мобильных и встроенных процессоров.
> А почему ты не попробуешь многопоточность через threading?
Я не знаю как такое в Tensorflow/Keras сделать
>Потому что, я в крайней мере сомневаюсь в возможности отключения одного из ядер CPU вообще. Этож блять нонсенс!
Не, не по настоящему отрубил ядро, а только для PyCharm через диспетчер задач отрубил 1 ядро. Зашёл в диспетчер, взял PyCharm и вместо All CPU CPU0 CPU1 снял галочку и поставил только CPU0.
>Я немного тобой восхищаюсь, ибо всё ещё не могу в тензор
Я тоже не могу, я просто загуглил готовый код и загуглил, что он работает только с версиями Keras 2.0.5 и Tensorflow 1.2 и в PyCharm установил такие.
> Вот тут и возникает вопрос — как это сделать?
Ну, дописать в функцию, как ещё. Изначально можешь установить такие коэффициенты, которые приведут дополнительные члены к 0 или 1, получая свою первую функцию.
Либо можешь иметь несколько функций с разным набором параметров и выбирать между ними когда надо.
Твоя нейронка сама по себе функцию не выдумает же, тебе в любом случае где-то нужно будет прописать эти новые параметры.
420x420, 3:04
Не уверен что правильно понял что тебе нужно, но посмотри на sympy, пакет для символьных вычислений, сможешь динамически конструировать математические функции.
Да, дописать в функцию это конечно действенно, но это частное решение. Т.е. мне нужно будет предусмотреть возможные варианты, заблаговременно, что вносит ограничения в систему. Я же хочу сделать некую абстрактную структуру, которая сама могла бы порождать частные решения, на каждый случай.
Возможно я прошу у двача слишком многого, но думал что тут есть люди могущие в агентно ориентированное программирование, где фактически создаётся код, который сам себя дописывает.
Пока, единственный подходящий выход, который вижу, это создать генератор кода в txt-файл, с разметкой через заданные символы например отступ через символ Tab или 6 alt+255. Правда потом нужно как-то сменить расширение файла на .py и каждую итерацию его нужно будет занового загружать наверно через FROM [xxx] import [YYY], чтоб принять поправленный код.
По крайней мере, это то, каким я понимаю агентно-ориентированное программирование в данный момент. Возможно, более опытные аноны смогут меня дополнить или поправить.
Но пока, у такого плана есть 3 проблемы:
1. Как в txt-файле с кодировкой UTF-8 сделать необходимое количество отступов, без использования нормальных IDE типа Шарма или Атома? Я вот хз, например, как сделать табуляционный пробел в таком файле, чтоб он сохранился. Может в ASCII порыться?
2. Как, прямо в коде, реализовать смену формата файла, с txt на .py? я хоть и макака ещё, но с таким точно не сталкивался ранее
3. Где-бы найти информацию про такое? Пока, даже гугл, даёт ссылки лишь на всякие научные работы по 5-10$ за штуку. В планах только попробовать Google Scholar и доки оттуда. Хотя может есть хорошие форумы по пайтону можно даже на английском
Спасибо за либу. Попробую в неё вкатиться.
>Я не знаю как такое в Tensorflow/Keras сделать
Так есть кажется стандартная для PyCharm либа threading.
https://habrahabr.ru/post/149420/
Уже не актуально
> и каждую итерацию его нужно будет занового загружать
importlib.reload(mymodule)
>Но пока, у такого плана есть 3 проблемы:
Вот это у тебя проблемы конечно.
>1.Как сделать необходимое количество отступов
Эм, открыть текстовый редактор и нажать на кнопочку tab? Ты в коде не так отступы делаешь, что ли? Или писать '\t' в файл, если из кода делается. Или ты имел в виду необходимое с точки зрения синтаксиса питона?
>2.Как, прямо в коде, реализовать смену формата файла, с txt на .py?
А зачем? .py это обычный текстовый файл, сразу в него и пиши. Это всего лишь имя файла.
По поводу АОП, к сожалению, ничего не подскажу. Мне просто твой реквест виидтся не совсем выполнимым в том виде, в котором ты хочешь. На основе чего эта абстрактная структура будет что-то создавать? У неё будет набор примитивных мини-функций или членов возможных функций или как?
>importlib.reload(mymodule)
Сяп, попробую.
>необходимое с точки зрения синтаксиса питона
Вот именно для этого мне и нужно будет написать программу, которая будет знать синтаксис питона, чтоб мочь в написание кода.
Сам код будет является набором подготовленных модулей или шаблонов. Например, в случае если для решения проблемы потребуется итерация, программа сама создаст цикл While или For. То есть будет некий блок поведения и блок возможных вариантов действия. Блок поведения пока хз как будет работать, но он будет строить новые блоки, за счёт композиции возможных вариантов действий, прописанных в шаблонах. Это как строительство из лего. У тебя есть N готовых блоков и некий свод правил, как их соединять синтаксис, в моём случае, дальше нужно накатить принципы постройки структур и как-то это связать с поведением.
Это то, что я понимаю под АОП, в самом простейшем исполнении.
>А зачем? .py это обычный текстовый файл, сразу в него и пиши.
То есть, я могу написать так? file = open(“testfile.py”,”w”) ???
>То есть, я могу написать так? file = open(“testfile.py”,”w”) ???
Ну да.
>Вот именно для этого мне и нужно будет
Ну, с отступами-то просто: все твои блоки будут написаны с нулевым отступом, а хрень, которая соединяет их, будет иметь некоторую переменну состояния, через которую следит за текущим отступом, добавляя нужно количество табов/пробелов к каждой строке блока.
А не пойти бы тебе в новый тред? Этот тонет уже давно.
Только-только его обнаружил.
Что-то каждый нечётный питонотред как-то упадочный
ты с АПИшки уже получаешь все данные в JSON, просто потом сохрани их в csv и делов-то
Очень нужна ваша помощь:
Нужно сделать клиент для MongoDB, вот только все запросы будут писаться в виде SQL ( не спрашивайте зачем )
Вообщем, вопрос: Как правильно распарсить этот SQL запрос? Или нужен другой подход?
>matlab - это проприетарный пакет для математиков.
Поржал с дауна. Да, проприетарный, но говорить, что матлаб - это пакет для математиков - значит быть одним из миллиардов ебланов, которые любят пиздеть, не разбираясь в вопросе.
Вы видите копию треда, сохраненную 29 мая 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.