
Nikolay
06.08.2018
08:03:33

El Mariachi
06.08.2018
08:03:34
про симуляцию

Nikolay
06.08.2018
08:03:43
сишные либы могут тредить

Stanislav
06.08.2018
08:03:55

Google

Stanislav
06.08.2018
08:04:00
Сишные да

Nikolay
06.08.2018
08:04:08

El Mariachi
06.08.2018
08:04:14
там полноценные обычные потоки, просто синхронизированные при помощи GIL

Nikolay
06.08.2018
08:04:18
и есть места, где gil отпускается

Unit
06.08.2018
08:05:06
gil отпускается на IO примитивах
там свои мютексы

Nikolay
06.08.2018
08:05:25

El Mariachi
06.08.2018
08:05:36

Nikolay
06.08.2018
08:05:51

Unit
06.08.2018
08:06:01
нонеча 95% тасок требующих многопоточности - io-bound

Nikolay
06.08.2018
08:06:17
если ты пишешь именно код на питоне - то тебе в абсолютном большинстве случаев потоки не нужны

Unit
06.08.2018
08:06:29
использовать чистый питон для намбер-кранчинга изначально стремная идея

Google

Unit
06.08.2018
08:06:34
в любом случае

El Mariachi
06.08.2018
08:06:39

Nikolay
06.08.2018
08:06:42
проблема в том, разве что, для io задач в контексте asyncio нет до сих пор полноценной библиотеки драйверов для всех задач

El Mariachi
06.08.2018
08:07:24

Nikolay
06.08.2018
08:07:29
GIL

Unit
06.08.2018
08:07:35
для параллелизации ио - ваще отлично

Honor
06.08.2018
08:07:47
Вот про потоки вопрос
Есть скрипт в цикле который пользователям шлет письма

El Mariachi
06.08.2018
08:08:11
GIL
если у меня 10 потоков из которых 9 в состоянии sleep, то GIL мне только помогает

Honor
06.08.2018
08:08:29
Хочу веб морду добавить, чтоб пользователей править

Nikolay
06.08.2018
08:08:37
еще раз объясняю. У тебя в контексте исполнения питонокода каждый отдельный байткод интерпретатора должен выполняться атомарно. GIL позволяет это сделать, но при этом у тебя тупо не сможет питонокод несколько потоков одновременно выполнять

Honor
06.08.2018
08:08:51
Это лучше отдельным потоком делать или отдельным скриптом?

Nikolay
06.08.2018
08:08:53

El Mariachi
06.08.2018
08:09:19

Nikolay
06.08.2018
08:09:19
и синхронизировать их на базе

Honor
06.08.2018
08:09:37

Nikolay
06.08.2018
08:09:37

Google

Nikolay
06.08.2018
08:09:45

Unit
06.08.2018
08:10:02

El Mariachi
06.08.2018
08:10:07

Nikolay
06.08.2018
08:10:25

Unit
06.08.2018
08:10:28
щас бы писать адовый бойлерплейт вместо ThreadPool.map()

Nikolay
06.08.2018
08:10:39
бойлерплейт my ass

Honor
06.08.2018
08:11:25

El Mariachi
06.08.2018
08:12:04

Nikolay
06.08.2018
08:12:28
и точно так же в пару строчек

El Mariachi
06.08.2018
08:13:02

Nikolay
06.08.2018
08:13:06
есть некоторые вещи, которые в современном мире имеет смысл писать НЕ на asyncio
но их не так много

El Mariachi
06.08.2018
08:13:44
асилил и забил

Nikolay
06.08.2018
08:14:23

El Mariachi
06.08.2018
08:14:46
ойвсе

Nikolay
06.08.2018
08:15:03
банальная задача - запустить сабпроцесс и одновременно писать и читать ему stdin/stdout

Google

Nikolay
06.08.2018
08:15:12
я посмотрю, как ты это сделаешь без asyncio

El Mariachi
06.08.2018
08:15:35
но у меня-то другая задача... зачем ты мне выдумываешь задачи под решение

Nikolay
06.08.2018
08:15:52

Alexey
06.08.2018
08:16:11
Всем привет! Скажите пож, а почему вот такая строка может возвращать ошибку?
plt.title(str(errors[i]))
errors[i] возвращает текст
Traceback (most recent call last):
File "C:\Users\313457\PycharmProjects\Error report\GIT\Report.py", line 158, in <module>
err_graph(top, data)
File "C:\Users\313457\PycharmProjects\Error report\GIT\Report.py", line 76, in err_graph
plt.title(str(errors[i]))
KeyError: 'Mobile not verified'
Process finished with exit code 1

Nikolay
06.08.2018
08:17:16

Admin
ERROR: S client not available

Alexey
06.08.2018
08:17:34
Ой, туплю, спасибо!

Nikolay
06.08.2018
08:19:54

El Mariachi
06.08.2018
08:22:10
ну расскажи задачу уже, чо ты
Я же сказал уже, выполнение нескольких тасков с задержками по времени... Можно конечно вообще в один поток, но хуже получается
в одном потоке затык в одном таске блокирует выполнение всех остальных... а так управлением (созданием и удалением) всех задач просто занимается основной поток в цикле

Nikolay
06.08.2018
08:24:17

El Mariachi
06.08.2018
08:24:41

Nikolay
06.08.2018
08:25:26
а какая периодичность?

El Mariachi
06.08.2018
08:25:46
от нескольких секунд до нескольких минут

Nikolay
06.08.2018
08:28:26
ну, тут все будет зависеть от того, сколько выполняется таск и как именно нужно обрабатывать запаздывание

El Mariachi
06.08.2018
08:30:14

Nikolay
06.08.2018
08:30:40
чтобы инструмент подобрать
в общем случае GIL в трединге только замедлить программу даже по сравнению с одним потоком позволяет

El Mariachi
06.08.2018
08:31:50
там где threading не подходит, есть multiprocessing и asyncio.... Но питон чаще вообще однозадачный, и тут GIL важнее вот этой особенности работы потоков

Google

El Mariachi
06.08.2018
08:32:29
ну, не настолько медленнее, по крайней мере, чтоб это имело решающее значение
до 3.2 вообще, конечно, катастрофа была

Nikolay
06.08.2018
08:38:05

CthUlhUzzz
06.08.2018
08:39:16
Если присмотреться, gil выполняет роль лупа в мультитрединге. Просто постоянно переключает потоки.
Только потоки ресурсов жрут больше

El Mariachi
06.08.2018
08:44:15
вот эту хрень и починили в 3.2
http://www.dabeaz.com/python/NewGIL.pdf

Nikolay
06.08.2018
08:46:19

El Mariachi
06.08.2018
08:47:01

Nikolay
06.08.2018
08:53:58
я вот про это

El Mariachi
06.08.2018
08:54:31
по дефолту affinity как-раз не выставлен
но можно