
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

Куча
14.10.2018
07:52:24

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

Valerа
14.10.2018
07:55:03

Владимир
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)

Владимир
14.10.2018
07:57:56

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

Куча
14.10.2018
07:59:46

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

Куча
14.10.2018
08:00:23

Владимир
14.10.2018
08:00:38
чорт..
а, правилньо я return забыл

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

Куча
14.10.2018
08:01:28

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

Владимир
14.10.2018
08:04:31

Куча
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

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

Google

Куча
14.10.2018
08:09:24

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

Admin
ERROR: S client not available

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

Aragaer
14.10.2018
08:10:50
чот не могу выровнять. Ну вобщем понятно

Cykooz
14.10.2018
08:14:13

Sergey
14.10.2018
08:15:20

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

Sergey
14.10.2018
08:19:45

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
Т.е. хероку запускает всё в один процес и никогда его не останавливает, ты сам его не перезапускаешь, и он супер стабильный - сам не падает?

Sergey
14.10.2018
08:32:08

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

Sergey
14.10.2018
08:34:55

Google

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

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

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

Sergey
14.10.2018
08:38:59

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?