@ru_python

Страница 6735 из 9768
Ross
14.10.2018
07:15:58
Ilia
14.10.2018
07:16:09
Куча
14.10.2018
07:46:40
Оцените насколько плохой этот код. Как оптимизировать такое чудовище, но чтобы рекурсия не исчезла: def my_min(*tuple_nums): if len(tuple_nums) == 1: return(tuple_nums[0]) list_nums = list(tuple_nums) if list_nums[1] > list_nums[0]: list_nums[1] = list_nums[0] return(my_min(*list_nums[1:]))

Aragaer
14.10.2018
07:47:11
а что надо?

Google
Куча
14.10.2018
07:47:21
Рекурсивно минимум найти

Aragaer
14.10.2018
07:48:41
def my_min(*args): if len(args) == 1: return args[0] x = my_min(args[1:]) if x > args[0]: return args[0] return x

Куча
14.10.2018
07:48:47
Хотя, я уже понимаю, что целый tuple не нужно копировать в список. Достаточно двух элементов, вроде бы.

Aragaer
14.10.2018
07:48:54
кто сказал, что рекурсия обязательно должна быть в конце?

и кортеж тоже можно раскрывать звездочкой

Куча
14.10.2018
07:49:16
Aragaer
14.10.2018
07:49:27
```

в начале и в конце

Куча
14.10.2018
07:49:45
Спасибо

Aragaer
14.10.2018
07:49:55
можно даже еще чуть круче

def my_min(first, *rest): if not rest: return first x = my_min(*rest) return x if x < first else first

Tigran
14.10.2018
07:51:39
минимум за N^2, мммм

Куча
14.10.2018
07:51:44
Google
Aragaer
14.10.2018
07:52:00
эээ.. линейно же

если минимум первый, то my_min от всего остального будет больше первого

Tigran
14.10.2018
07:52:22
не, распаковка, скорее всего, сделает N^2

Tigran
14.10.2018
07:52:28
*rest

Aragaer
14.10.2018
07:52:33
а

Tigran
14.10.2018
07:52:49
это ж петухон

внезапный N^2 тут в норме вещей

Aragaer
14.10.2018
07:52:59
ну да, можно на распаковке потерять

Ну да
ну и значит вернется первый, а не my_min от всего остального

return (x if x < first else first) - вот так читать надо

Куча
14.10.2018
07:54:37
def my_min(first, *rest): if not rest: return first x = my_min(*rest) return x if x < first else first
Тут else я так понимаю можно не использовать в конце?

Владимир
14.10.2018
07:55:06
Aragaer
14.10.2018
07:55:30
конструкция A if C else B

Куча
14.10.2018
07:57:22
нельзя, тернарник же
Я имею в виду, что тут можно без else, типа так: ``` def my_min(first, *rest): if not rest: return first x = my_min(*rest) return x if x < first return(first)

Aragaer
14.10.2018
07:58:41
if x < first: return x return first

так можно

Куча
14.10.2018
07:59:01
Я понял, нет такой конструкции просто

Google
Aragaer
14.10.2018
07:59:19
да, это в перле так

Владимир
14.10.2018
07:59:19
def my_min(first, *rest): if not rest: return first x = my_min(*rest) if x < first: return x return first

Aragaer
14.10.2018
08:00:01
чот не верю

Владимир
14.10.2018
08:00:38
чорт..

а, правилньо я return забыл

Aragaer
14.10.2018
08:01:15
забыл не с той стороны

Куча
14.10.2018
08:01:28
if x < first: return x return first
Это естественно валид

Aragaer
14.10.2018
08:01:51
но лучше на разных строках

Куча
14.10.2018
08:02:07
Владимир
14.10.2018
08:02:10
лучше всего тернарник)

Aragaer
14.10.2018
08:02:11
можно так return (x, first)[x > first]

Куча
14.10.2018
08:03:32
можно так return (x, first)[x > first]
Вообще черная магия.

Владимир
14.10.2018
08:04:31
можно так return (x, first)[x > first]
true/false кастуются к 1, 0?

Куча
14.10.2018
08:04:57
Kobe
14.10.2018
08:07:02
Aragaer
14.10.2018
08:07:57
def my_min(first, *rest, _m=None): if _m is None: _m = first else: _m = (_m, first)[_m > first] if not rest: return _m return my_min(*rest, _m=_m)

Куча
14.10.2018
08:08:00
Pep
Точняк, бро.

Aragaer
14.10.2018
08:08:02
с хвостовой рекурсией

Google
Aragaer
14.10.2018
08:09:51
мм... нет, надо перенести первые две строки ближе к концу

Admin
ERROR: S client not available

Sergey
14.10.2018
08:10:33
ребят а как реализовать такое, нажимает допустим юзер кнопку по которой генерируется определенная инфа, которая занимает время, то есть желательно ему дать ответ, типа подожди инфа генерируется, в другом потоке/сервисе генерировать эту инфу и отдать ему же результат ? юзаю фласк если это важно

Vaderoff
14.10.2018
08:19:44
Кто с мака работает с питоном, какую посоветует иде ?

Vaderoff
14.10.2018
08:20:09
Sergey
14.10.2018
08:21:00
то есть по сути результат задачи нужно так же хранить в базе?
хотя если ее не надо хранить, можно и в памяти

Cykooz
14.10.2018
08:25:30
Зависит от её важности, и необходимости масштабировать сервис.

Sergey
14.10.2018
08:28:27
Зависит от её важности, и необходимости масштабировать сервис.
да с бесплатным вариантом на хероку не помасштабировать особо ? просто никогда его не юзал, решил в качестве эксперимента попробовать а если тупо в памяти все это хранить допустим таски кидать в очередь, обрабатывать их, результаты складывать в словарь, клиент уже достаёт из этого словаря инфу

просто эти данные по сути временные, мне они постоянно и не нужны

Cykooz
14.10.2018
08:30:26
Т.е. хероку запускает всё в один процес и никогда его не останавливает, ты сам его не перезапускаешь, и он супер стабильный - сам не падает?

Cykooz
14.10.2018
08:32:17
Какие у тебя гарантии что если клиент придёт за результатом через 5 минут он попадёт в тот же самый процес в памяти которого есть результат

И как долго ты будешь хранить в памяти эти результаты?

Sergey
14.10.2018
08:34:55
Какие у тебя гарантии что если клиент придёт за результатом через 5 минут он попадёт в тот же самый процес в памяти которого есть результат
дак клиент будет слать запросы допустим на /results и я буду доставать инфу, думаю тут проблем доступа к памяти не должно быть и это будет не на 5 минут, думаю секунд 30-60

Google
Cykooz
14.10.2018
08:35:51
Процессы, память, сеть - всё это временные и не стабильные вещи. Не стоит на них полагаться в делах надёжного хранения и доставки данных.

Sergey
14.10.2018
08:36:34
понимаю что через базу это провернуть все можно но говорю это бесплатный хероку) там ограничения на это дело

Cykooz
14.10.2018
08:37:40
дак клиент будет слать запросы допустим на /results и я буду доставать инфу, думаю тут проблем доступа к памяти не должно быть и это будет не на 5 минут, думаю секунд 30-60
От куда ты будешь доставать инфу? Сколько процессов запускает хероку для твоего кода? Если один (как тебе нужно для твоей задумки с памятью), то такой сервис будет обрабатывать одновременно только один запрос.

Где-то даже слышал что хероку сам стопает все процессы, если их не используют

Cykooz
14.10.2018
08:39:48
Ну ок, успешной отладки ?

Sergey
14.10.2018
08:42:15
я привёл то что есть может мне по канонам кубернэйтс развернуть ещё и масштабировать во все щели? я привёл пример того что использую и спросил для этого оптимальный вариант через базу мог бы, но там по-моему только sqlite, а в ней хранить херову кучу точек для построения, ну такое себе

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

Arnie
14.10.2018
09:08:08
Как в школе

Sergey
14.10.2018
09:15:13
хотя там монгу можно бесплатно 500мб юзать ) так что через неё можно замутить

Как в школе
воскресенье же)

Slam! 538
14.10.2018
09:56:58
как сохранить логи на logentries?

Страница 6735 из 9768