
Aram
06.04.2019
07:32:29
Нашёл такую фразу "любой пользовательский тип является хэшируемым по определению, потому что его хэш-значение равно id() и никакие два объекта этого типа не равны". Почему?
Если я определю класс с атрибутом значение которого установлю равным изменяемому объекту, например, пустому листу и потом будут добавлять элементы в этот лист, разве это не делает наличие среди атрибутов объекта изменяемого объекта сам объект не хэшируемым? Ведь сам объект при этом тоже изменится, а следовательно должен измениться и хэш?

Макс
06.04.2019
07:38:28

Aram
06.04.2019
07:42:36
Хм, не знаю, если например посмотреть id созданного листа потом добавить элемент в лист и принтануть id листа ещё раз id совпадают, хотя лист не хэшируемый. То есть адрес листа тоже не изменился как я понимаю

Макс
06.04.2019
07:43:09

Google

Paul
06.04.2019
07:43:36

Aram
06.04.2019
07:43:53
И при этом хэшируемость по определению предполает что хэш объекта должен оставаться не изменяемым на протяжении жизни объекта

Макс
06.04.2019
07:44:03
плохой пример с tuple

Aram
06.04.2019
07:49:36
Хз, не знаю что здесь имеется в виду, это переведенная фраза из глоссария документации

Макс
06.04.2019
07:52:33

Monch
06.04.2019
07:54:50
Здравствуйте. Проблема в следующем:
Нужно сделать скриншот элемента в headless браузере (chrome)
Есть следующий простенький код, который работает:
https://pastebin.com/pJd5fMcq
Но если раскомментировать строчку с headless, он перестает работать.

Aram
06.04.2019
08:01:06

?? Eugene
06.04.2019
08:01:50

Макс
06.04.2019
08:02:28
адресс а остался прежним

Google

?? Eugene
06.04.2019
08:02:41
При создании объекта ему назначается какой-то айди, который впоследствии не изменяется
Даже если сам объект мутируется

Макс
06.04.2019
08:03:35
хеш не говорит, что объект неизменяем. хеш говорит, что объект должен быть уникален

Andrey
06.04.2019
08:06:40

Макс
06.04.2019
08:06:45
при этом если Человек сменит Имя/Фамилию, это все-равно останется прежний человек

Andrew
06.04.2019
08:26:18
Ребята подскажите ловлю ValueError: list.remove(x): x not in list
while len(spisok) > 0:
print('Длина списка:', len(spisok))
with Pool(25) as p:
p.map(download_html, spisok)
def download_html(url):
spisok.remove(url)
print('Скачал и удалил', url)
в чем проблема?

Артем
06.04.2019
08:27:03
Народ подскажите а у jinja2 рендеринг файла асинхронный? Я чет не могу понять из доков (( Уже и в код залез а там блокирующий open()

Макс
06.04.2019
08:27:17
url нев в списке)

Alex
06.04.2019
08:27:22
синхронный

Andrew
06.04.2019
08:27:54

Alex
06.04.2019
08:28:45

Артем
06.04.2019
08:29:16
синхронный
Вот блин ((( а тогда какой профит использования в асинхронных фреймворках?

Aram
06.04.2019
08:29:42

Alex
06.04.2019
08:29:58
Однако файловый IO не может быть асинхронным (на самом деле может).

Макс
06.04.2019
08:31:14

?? Eugene
06.04.2019
08:31:26
Вот есть асинхронная жинжа для аиохттп https://github.com/aio-libs/aiohttp-jinja2

Alex
06.04.2019
08:31:38
Поэтому если рендеринг шаблона у тебя становится узким местом - выноси ее в отдельный поток.

Google

?? Eugene
06.04.2019
08:31:39
Не смотрел что именно там асинхронное

Артем
06.04.2019
08:31:52

Alex
06.04.2019
08:32:00

Andrew
06.04.2019
08:32:54

Артем
06.04.2019
08:33:14

Alex
06.04.2019
08:33:41

?? Eugene
06.04.2019
08:34:02
Ну оно и понятно

Alex
06.04.2019
08:34:42
дык, а что ты ожидал. файлового асинхронного IO в общем случае не бывает.
(под линуксами, если не брать во внимание AIO)
который поддерживается в очень ограниченном количестве случаев.
смущает
если ты запускаешь Pool.map(), нафига вообще удалять из списка урлы?

Aram
06.04.2019
08:37:44

Andrew
06.04.2019
08:38:33

Alex
06.04.2019
08:38:52

Andrey
06.04.2019
08:38:53

Alex
06.04.2019
08:39:06

Aram
06.04.2019
08:39:56

Alex
06.04.2019
08:40:05
при чем тут адрес объекта в памяти к его хешу?

Google

Andrey
06.04.2019
08:40:47

Alex
06.04.2019
08:41:41
предлагаю тебе забуриться в любую книжку по Алгоритмам и Структурам данных и наконец-то изучить как работает хеш-таблица и зачем там нужны хеши.

Andrey
06.04.2019
08:45:00
Чтобы было уникальное соответствие между ключом и значением
Хеш нужен, чтобы можно было по _значению_ объекта "примерно" понять, есть он в хеш-таблице (dict, set) или нет. Примерно — см. коллизии. Проблема с изменяемыми (mutable) типами вроде списка в том, что после изменения этот список будет лежать не в той ячейке хеш-таблицы.
Для кастомных типов по умолчанию есть максимально тупая реализация хешей — хеш это условно адрес в памяти, сравнение всегда возвращает False.

Alex
06.04.2019
08:47:39

Aram
06.04.2019
08:48:28

Andrey
06.04.2019
08:48:29

Alex
06.04.2019
08:49:07

Andrey
06.04.2019
08:49:24
нет
Я про вот такое:
>>> class User:
... def __init__(self, name):
... self.name = name
...
>>> User('abc') == User('abc')
False

Alex
06.04.2019
08:49:53

Andrey
06.04.2019
08:50:24

Alex
06.04.2019
08:50:26
для CPython id() возвращает адрес объекта в памяти, но это особенность реализации.

Tishka17
06.04.2019
08:51:07
Вы в двух чатах одновременно это обсуждаете?

Andrey
06.04.2019
08:55:00

Aram
06.04.2019
09:09:35
Хеш это просто int
Все равно не понял почему кастомный объект хэшируемый(( ведь здесь прямая аналогия с листом если среди атрибутов этого объекта есть лист, который нехэшируемый, то и объект должен быть нехэшируемый?

Denis
06.04.2019
09:10:07
Приветствую. У gunicorn можно выбрать асинхронный тип воркеров -k gevent, но я наблюдаю следующую картину: при 1 воркере если отправить один запрос, который выполняется довольно долнго и следом отправить второй (лёгкий), то второй ждёт пока первый не отработает. Куда смотреть или я неправильно понимаю назначение gevent воркеров?

Макс
06.04.2019
09:10:43

Tishka17
06.04.2019
09:12:25

Питирима
06.04.2019
09:13:39
В нейронках шарит кто?

Google

Aram
06.04.2019
09:18:09

Tishka17
06.04.2019
09:18:29
Да не в коллизиях дело
А в том, что обьект ты положил с одним хэшем в словарь, а потом у него другой оказался и хз как будет словарь работать
В списке все элементы равноправны и по логике все должны участвовать в хэше. А в объекте бабушка надвое сказала

punkgendos
06.04.2019
09:42:53
сорян за оффтоп, YouTube API знает кто? как узнать место ролика в тренде?