
Artem
11.07.2017
09:54:07
На собеседовании можно долго лить короче

Aragaer
11.07.2017
09:55:09
а list comprehension это куда?

Павел
11.07.2017
09:55:12
Уже зато что есть мысли на этот счет дадут +

Aleksandr
11.07.2017
09:55:42

Google

Hot
11.07.2017
09:58:06
Ух ты, спасибо.
Достаточно много полезной инфы.

melancholiac
11.07.2017
09:58:32

Hot
11.07.2017
09:59:10
Нет, там на SO поднимали вопрос насчёт for loop vs map, и кто-то предположил, что на многопочных системах map будет быстрее.
И там же кто-то затестил.

Nikolay
11.07.2017
09:59:26

melancholiac
11.07.2017
09:59:36

Hot
11.07.2017
09:59:42
А вот хз
Вопрос не смог найти сейчас.

melancholiac
11.07.2017
09:59:56
разве мап из коробки распаралеллен?

Nikolay
11.07.2017
10:00:18

Aragaer
11.07.2017
10:00:30
лист компрехеншн вроде из коробки распараллелен

Artem
11.07.2017
10:00:36

Google

Даниил
11.07.2017
10:00:44

Aragaer
11.07.2017
10:00:51
ок

Nikolay
11.07.2017
10:00:51

melancholiac
11.07.2017
10:00:55
мап генерит в 2 раза более короткий байткод чем цикл

Nikolay
11.07.2017
10:01:00
ты про тот, что в мультипроцессинге?

Artem
11.07.2017
10:02:00
Да

Nikolay
11.07.2017
10:02:25
ну, это немного другое

Даниил
11.07.2017
10:02:53

melancholiac
11.07.2017
10:03:39
1 вызов функции
в цикле: трогается итератор,из него достаются значения, джампы и pop'ы
а вообще странно что мап не распараллелен
и листкомп

Даниил
11.07.2017
10:06:05
нет, не странно
ты вообще как это представляешь себе

Denis
11.07.2017
10:06:10
Нет, не странно

Даниил
11.07.2017
10:06:18
если IO операции в map, чё будет?

Artem
11.07.2017
10:06:23

melancholiac
11.07.2017
10:06:31

Denis
11.07.2017
10:06:39
Смысл с гилом параллелить?

Google

Даниил
11.07.2017
10:06:43
вызов конечно

melancholiac
11.07.2017
10:06:51

Даниил
11.07.2017
10:07:25

melancholiac
11.07.2017
10:07:25
вот если функция которая маппит последовательность будет её менять в процессе - странно

Artem
11.07.2017
10:07:32

melancholiac
11.07.2017
10:07:53
логично
тогда так: "странно что мап опционально не распралелленый"

Даниил
11.07.2017
10:08:31
настоящей параллельность же в Python вообще нет

Artem
11.07.2017
10:08:51
а это другой разговор, да

melancholiac
11.07.2017
10:09:01

Даниил
11.07.2017
10:09:08
ну типа, зелёные треды есть, но это не то

Даниил
11.07.2017
10:09:20
ты от них не получишь ускорения если будешь вычисления тяжёлые в цикле делать

Denis
11.07.2017
10:09:33

melancholiac
11.07.2017
10:09:40
так, я правльно знаю многопоточность!=параллельность?

Даниил
11.07.2017
10:10:09

Alex
11.07.2017
10:10:14
Коллеги, а тут релевантные предложения работы можно публиковать?

Artem
11.07.2017
10:10:18
правильно

Павел
11.07.2017
10:10:30

Даниил
11.07.2017
10:10:37
ну вообще да, пишут что зелёные - это в stackless python

Google

Artem
11.07.2017
10:10:47

Даниил
11.07.2017
10:12:11
так, я правльно знаю многопоточность!=параллельность?
ну смотри, вот взять например те же зелёные треды
код выполняется в несколько потоков, но эти потоки выполняются не параллельно на нескольких ядрах, а просто управление переключается между ними, так что смысл в них есть только чтобы асинхронно работать например с долгими IO операциями, но не для того чтобы распараллеливать тяжёлые вычисления

Denis
11.07.2017
10:12:32
Но они же не зеленые...

Даниил
11.07.2017
10:12:37
ну да, да, я как пример
когда многопоточность != параллельность
а я пока пошёл читать про GIL, pthread и вот это вот всё

melancholiac
11.07.2017
10:13:07

Admin
ERROR: S client not available

Даниил
11.07.2017
10:13:30
In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once

melancholiac
11.07.2017
10:14:01
т.е. профит многопоточности в том что есть несколько потоков, каждый оперирует своей областью памяти и между ними можно переключатся?

Даниил
11.07.2017
10:14:15
нене, не каждый оперирует своей областью памяти

Nikolay
11.07.2017
10:14:29

Даниил
11.07.2017
10:14:29
память как раз общая, поэтому когда один поток работает, другие блокируются

Denis
11.07.2017
10:14:31
Еще гил обычно отпускается во время I/O

Nikolay
11.07.2017
10:14:34
и память общая, да

melancholiac
11.07.2017
10:14:38
просто я не понимаю в чем смысл: выполнялось бы все в один поток

Nikolay
11.07.2017
10:14:48

melancholiac
11.07.2017
10:14:57
что с многопоточностью что без нет паралелльности

Даниил
11.07.2017
10:14:59
долго выполняющийся

Google

Даниил
11.07.2017
10:15:07
делается запрос
управление переключается потоку который пока делает что-то другое

melancholiac
11.07.2017
10:15:42
стоп-стоп а сам запрос не занимает процессор?

Даниил
11.07.2017
10:15:42
и короче процессорное время не теряется попусту пока происходит запрос

Nikolay
11.07.2017
10:16:15

melancholiac
11.07.2017
10:16:32

Nikolay
11.07.2017
10:16:42

Даниил
11.07.2017
10:16:49
си?
ну да
тот же NumPy посмотри

melancholiac
11.07.2017
10:16:53
типо джитона или айрона?

Nikolay
11.07.2017
10:18:00

Artem
11.07.2017
10:18:28
ты так говоришь, как будто здесь необычные

melancholiac
11.07.2017
10:19:25
может у меня не так с пониманием, но мне кажется вся работа - это операция над памятью. почему нельзя без многопоточности одному потоку пока делается запрос к бд начать выполнять другой код (без создания двух потоков)?

Nikolay
11.07.2017
10:19:34

melancholiac
11.07.2017
10:19:39
просто над другой областью памяти

Nikolay
11.07.2017
10:19:53
но не все базы и клиенты к ним это умеют

melancholiac
11.07.2017
10:20:06
а без гила потоки могут выполнятся параллельно?

Nikolay
11.07.2017
10:20:12

Artem
11.07.2017
10:20:23
если у тебя больше одного ядра*

Nikolay
11.07.2017
10:20:32