@ru_python

Страница 6140 из 9768
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 отпускается

там полноценные обычные потоки, просто синхронизированные при помощи GIL
что никак тебе, как разработчику, не помогает, к сожалению

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

там свои мютексы

Nikolay
06.08.2018
08:05:25
gil отпускается на IO примитивах
ну потому что там вызовы в ядро, логично

El Mariachi
06.08.2018
08:05:36
что никак тебе, как разработчику, не помогает, к сожалению
для асинхронности в питоне есть много других решений... если мне асинхронность не нужна - использую потоки, и они мне очень помогают

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 нет до сих пор полноценной библиотеки драйверов для всех задач

если мне нужны (а они мне часто нужны), то я их использую
в питонокоде от этого профита нет, одни убытки

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
если у меня 10 потоков из которых 9 в состоянии sleep, то GIL мне только помогает
да, но если это io задача - то asyncio справится, скорее всего, лучше

Это лучше отдельным потоком делать или отдельным скриптом?
это лучше написать морду отдельно, а скрипт отдельно

El Mariachi
06.08.2018
08:09:19
да, но если это io задача - то asyncio справится, скорее всего, лучше
скорее всего так же, но asyncio оверкилл ненужный

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

Honor
06.08.2018
08:09:37
Nikolay
06.08.2018
08:09:37
скорее всего так же, но asyncio оверкилл ненужный
нет, asyncio - это самый современный вариант работы с подобными вещами

Google
Nikolay
06.08.2018
08:09:45
Просто 2 пай скрипта будет?
смотря как напишешь

El Mariachi
06.08.2018
08:10:07
нет, asyncio - это самый современный вариант работы с подобными вещами
с выполнением множеств задач по таймерам, например?

Nikolay
06.08.2018
08:10:25
с выполнением множеств задач по таймерам, например?
выполнение множества задач по таймерам - это cron. Но да, asyncio тоже так может

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

Nikolay
06.08.2018
08:10:39
Просто 2 пай скрипта будет?
ну, я бы взял фласк и я бы взял cron

бойлерплейт my ass

Honor
06.08.2018
08:11:25
El Mariachi
06.08.2018
08:12:04
выполнение множества задач по таймерам - это cron. Но да, asyncio тоже так может
но нафик мне asincio, если с нужной мне задачей справляется threading прекрасно в 2 строчки кода?

Nikolay
06.08.2018
08:12:28
но нафик мне asincio, если с нужной мне задачей справляется threading прекрасно в 2 строчки кода?
потому что asyncio справится с ней же быстрее в большинстве случаев, если это i/o задача

и точно так же в пару строчек

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
но у меня-то другая задача... зачем ты мне выдумываешь задачи под решение

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

Admin
ERROR: S client not available

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

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

в одном потоке затык в одном таске блокирует выполнение всех остальных... а так управлением (созданием и удалением) всех задач просто занимается основной поток в цикле

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
ну, тут все будет зависеть от того, сколько выполняется таск и как именно нужно обрабатывать запаздывание
ну просто для threading есть свои применения... если держать в уме, как работает GIL с ними и не ожидать от threading большего, чем это позволяет GIL

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
в общем случае GIL в трединге только замедлить программу даже по сравнению с одним потоком позволяет
по сравнению с одним потоком вроде начиная с 3.2 уже нет.... не медленнее

ну, не настолько медленнее, по крайней мере, чтоб это имело решающее значение

до 3.2 вообще, конечно, катастрофа была

Nikolay
06.08.2018
08:38:05
по сравнению с одним потоком вроде начиная с 3.2 уже нет.... не медленнее
ну это ты намекаешь, видимо, на то, что в 3.2 починили, что sleep таки отпускает гил :)

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

Только потоки ресурсов жрут больше

El Mariachi
06.08.2018
08:44:15
ну это ты намекаешь, видимо, на то, что в 3.2 починили, что sleep таки отпускает гил :)
да не, sleep и раньше гил отпускал.... проблема-то, когда два ядра процессора(два процессора) пытаются между собой поделить 2 потока, а GIL им не дает... и начиналась битва!

вот эту хрень и починили в 3.2

http://www.dabeaz.com/python/NewGIL.pdf

Nikolay
06.08.2018
08:46:19
да не, sleep и раньше гил отпускал.... проблема-то, когда два ядра процессора(два процессора) пытаются между собой поделить 2 потока, а GIL им не дает... и начиналась битва!
погоди, так там же affinity выставлен по дефолту, интерпретатор в принципе не может больше одного ядра использовать по умолчанию

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

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

но можно

Страница 6140 из 9768