
Артур
25.10.2016
12:44:26
Когда тестим скорость получения строки из базы, в процесс включается много лишнего

Andrey
25.10.2016
12:46:15
синтетические тесты дают хорошее представление о размере оверхеда, который добавляется фреймворком => логики должно быть по минимуму
а дальше уже каждый прикидывает, сколько логики он сможет засунуть в этот фреймворк

Alexander "PekopT"
25.10.2016
12:59:45
ктонить работал с Marshmallow + SQLAlchemy плотно?

Lev
25.10.2016
13:36:50
Кто может объяснить потоки в питоне и как работать с бд в торнадо - она ж будет блокировать

Google

Lev
25.10.2016
13:36:52
?

Andrey
25.10.2016
13:37:11
есть motor - асинхронный аналог pymongo
а потоками в питоне лучше не увлекаться )

Lev
25.10.2016
13:38:08
Почему?

Andrey
25.10.2016
13:38:13
и дело не только в GIL, но и в планировщике
потому что планировщик питоновских потоков имеет свое мнение о том, какой поток должен отработать следующим, очень часто это идет вразрез с мнением ОС - в этом случае планировщик переключает потоки, пока не запустится нужный - соотно производительность с ростом числа потоков падает как минимум линейно
попробуй запусти 100 busy-потоков и открой htop - там большая часть полоски CPU будет красной

Roman
25.10.2016
13:40:27

Andrey
25.10.2016
13:41:53

Lev
25.10.2016
13:42:11
Я правильно понял что поток выполняется в один момент только один?
если я устрою sleep то заснут ваще все
?

Roman
25.10.2016
13:43:14

Google

Roman
25.10.2016
13:43:27

Lev
25.10.2016
13:44:20
Ага, активен в один момент времени только один поток, но если он чего то ждет (чтения с диска) - будет выполняться второй?

Roman
25.10.2016
13:45:11

Lev
25.10.2016
13:46:00
А как мне понять что такая то фия заставит питон выполнять второй поток а не будет тупо ждать пока чтение или че нить еще закончится?

Aeterna
25.10.2016
13:47:33
он не будет тупо ждать. он не будет блокировать исполнение других

Lev
25.10.2016
13:47:50
оба "не"?
янхнп

Andrey
25.10.2016
13:48:41

Ray
25.10.2016
13:48:51
а потоками в питоне лучше не увлекаться )
Задача: вычитать с удаленного сервера постгреса овер 5 000 000 рекордов. Решение: делим 5 000 000 на n потоков, каждому потоку определяем правильный диапазон рекордов стар:стоп. Не заметил чтобы 20 потоков работали быстрее 40
правда в top не смотрел

Lev
25.10.2016
13:49:28
.... а вообще причем тут ОС? Я имел ввиду другой питоновский поток

AnswerX
25.10.2016
13:49:40
питоновский поток=\

Lev
25.10.2016
13:49:40
Я думал этим питон должен рулить
Кто работал с tornado - как в нем лезть в базу данных или читать с диска, если (если я все правильно понял) нельзя блочить Handler?

Ray
25.10.2016
13:51:11
так у торнадо есть event loop вроде как

Andrey
25.10.2016
13:51:24

Lev
25.10.2016
13:51:52
Я не въеду в чем соль с потоками в питоне

AnswerX
25.10.2016
13:51:53
много потоков threading.Thread() &
?

Google

AnswerX
25.10.2016
13:52:09
соль в том что они криво работают
или не работают

Ray
25.10.2016
13:52:14

Lev
25.10.2016
13:52:15
Как именно криво?
не то чтобы я особо прям разбирался с потоками... но врое все всегда было просто и очевидно в той же яве и шарпе. Не напарывался. Стал читать про питон - ваще не понятно в чем загвоздка

Ray
25.10.2016
13:53:28
Как именно криво?
да нормально там все с потоками. Берите и делайте. Будут проблемы - тогда будете фиксить. Главное не спешить

AnswerX
25.10.2016
13:53:39
например, мне нужно было напилить одновременно в N потоков запрос к опенстеку. Используя threading.Thread() я добился 2.2к примерно запросов в секунду. А используя eventlet.GreenPool() добился 5к. Как это может быть?

Lev
25.10.2016
13:54:17
А что вы с Thread делали?
Может мало задач было на один тред?

AnswerX
25.10.2016
13:54:46
=\

Ray
25.10.2016
13:55:20

Roman
25.10.2016
13:55:23

Ray
25.10.2016
13:55:25
просто интересно

Pavel
25.10.2016
13:55:34

AnswerX
25.10.2016
13:55:38
ну я сча уже не могу, нет того окружения у меня
так-то да, может и время переключения

Andrey
25.10.2016
13:55:49

AnswerX
25.10.2016
13:56:00
но по нормальному должна быть одна хорошая реализация многопоточности
и все

Роман
25.10.2016
13:56:03
попробуйте тоже самое с нативным ThreadingPool

Google

AnswerX
25.10.2016
13:56:13
а не вот это "может лучше это или то"

Роман
25.10.2016
13:56:14
а потом и с мультипроцессинговым пулом )

Roman
25.10.2016
13:56:17

Роман
25.10.2016
13:56:20
теста ради уже :D

AnswerX
25.10.2016
13:56:36
не получится у меня сейчас

Roman
25.10.2016
13:56:53

Admin
ERROR: S client not available

AnswerX
25.10.2016
13:56:55
но я так для примера вбросил что происходит с потоками в питоне
а при чем тут i/o bound в этих двух случаях?

Andrey
25.10.2016
13:57:41

Roman
25.10.2016
13:58:12

Lev
25.10.2016
13:58:19
Так поток будет один в один момент времени или че?

Ray
25.10.2016
13:58:34

AnswerX
25.10.2016
13:58:38
и как оно уперлось в сеточку?

Andrey
25.10.2016
13:58:40
поток всегда один в один момент времени для одного процесса

AnswerX
25.10.2016
13:58:58
там 10 гигабит сеточка если шо
если это как-то поможет

Andrey
25.10.2016
13:59:11

Anton
25.10.2016
13:59:15

Google

Роман
25.10.2016
13:59:35
о расскажите тогда как жить с сетью и потоками

Anton
25.10.2016
13:59:43
молча

Roman
25.10.2016
13:59:44

AnswerX
25.10.2016
13:59:47
ну может и в сеточку, просто я хочу понять что тут камень предкновения в том и том случае

Andrey
25.10.2016
13:59:48

AnswerX
25.10.2016
13:59:52
если все железки одинаковые

Roman
25.10.2016
14:00:32

Lev
25.10.2016
14:00:34
Так.. понятно. А почему в торнадо тогда нельзя блочить?
Если оно де факто не будет блочиться?

Ray
25.10.2016
14:00:48

Roman
25.10.2016
14:00:51

Andrey
25.10.2016
14:01:33

AnswerX
25.10.2016
14:02:01
я уточню задачу - я дергаю кистоун на предмет получения токена чтобы понять сколько одновмеренно этих самых токенов я могу получить. Так вот трединг мне выдал чуть больше двух тысяч и потом посыпались ошибки, а евентлет 4.5 (я писал 5 но сча нашел запись что 4.5 тыс)

Anton
25.10.2016
14:02:14

AnswerX
25.10.2016
14:02:16
сетка 10 гигабит пропускает спокойно

Andrey
25.10.2016
14:02:35

Roman
25.10.2016
14:03:49