
Yegor
16.12.2018
15:50:35
Так я ведь и колупаюсь во всем этом потому что у меня ответы будут долгие

Bogdan (SirEdvin)
16.12.2018
15:51:21
Возможно я не совсем понимаю, но как много можно думать о gil? Треды вам скорее всего просто не нужны, если вы можете использовать asyncio и на этом все. Или есть какие-то тонкости?)

Tishka17
16.12.2018
15:52:08
Asyncio не поможет делать два дела параллельно, если нет io

Yegor
16.12.2018
15:52:11
Asyncio чет в голове не укладывается

Google

Tishka17
16.12.2018
15:52:29
А треды позволят, хотя и будет не быстрее чем по очереди

Сергей
16.12.2018
15:52:35

Yegor
16.12.2018
15:52:46
Я не могу написать им того что скидывал выше

Bogdan (SirEdvin)
16.12.2018
15:52:55

TpouHuK
16.12.2018
15:53:04
?

Владимир
16.12.2018
15:53:32

Tishka17
16.12.2018
15:53:36

Bogdan (SirEdvin)
16.12.2018
15:53:57

Tishka17
16.12.2018
15:54:14

Андрей
16.12.2018
15:54:23
Привет!
Имею датафрейм такого вида:
Расстояние, км
Предприятие Водитель Документ
Соль Иванов 1 900.352618
2 166.207261
Сидоров 3 680.800217
4 500.707984
Щебень Петров 10 753.589522
20 312.992229
30 712.442144
Иванов 40 940.743123
Петров 501 868.721067
Песок Попов 15 86.458835
800 288.436953
Как мне получить срез датафрейма, содержащий только данные о перевозках, совершенных одним и тем же водителем для разных предприятий?
В данном случае такой df хочу получить:
Расстояние, км
Предприятие Водитель Документ
Соль Иванов 1 900.352618
2 166.207261
Щебень Иванов 40 940.743123
#pandas #multiindex


Vladislav
16.12.2018
15:55:15
Всем добрый вечер
Мне тут захотелось сделать такую вещь, как blueprint в UE
Или ноды в blender
В общем визуальное программирование, скорее пародия на него
Использовать буду PyQt5 но дело не в нем
К сути:
Мне нужно что бы человек с помощью встроеных - мной написанных функций(циклов, условий), соединением блоков сделал алгоритм, и потом без проблем вызывал его в программе
Я много думал над
globals()
exec()
И вот последнее, до писать ко всей системе генератор кода, потом его компилировать в .pyc
И без проблем вызывать в любом месте

Google

Bogdan (SirEdvin)
16.12.2018
15:56:02
Смотря что вам надо
Ну, мне кажется, что юзкейсов у тредов ограниченное количество и в основном все они связаны так или иначе с теми штуками, которые снимают gil

Сергей
16.12.2018
15:56:06
GIL не дает 2 потокам выполняться в один момент времени. Вы хотите сказать, что несколько корутин выполняется в один момент времени? Треды и корутины - это немного разных подход и часто для разных задач.

Bogdan (SirEdvin)
16.12.2018
15:56:14
Потому что в противном случае в третьем питоне оверхед жуткий

Владимир
16.12.2018
15:56:24
https://www.youtube.com/watch?v=Bv25Dwe84g0

Tishka17
16.12.2018
15:56:43

Bogdan (SirEdvin)
16.12.2018
15:56:52

Владимир
16.12.2018
15:57:16

Bogdan (SirEdvin)
16.12.2018
15:57:26
Ну, зачем сейчас нужны треды в питоне тогда?

Tishka17
16.12.2018
15:57:52
Ну и опять же, на тредах писать проще

Сергей
16.12.2018
15:58:02

Владимир
16.12.2018
15:58:10

Bogdan (SirEdvin)
16.12.2018
15:59:04

Tishka17
16.12.2018
15:59:09
Опять же gil не говорит, что работает только один поток. Он об одном потоке, выполняющем именно питоновский код

Владимир
16.12.2018
15:59:20

Yegor
16.12.2018
16:00:02
мой код задействует все ядра?

Bogdan (SirEdvin)
16.12.2018
16:00:15
Откуда у вас возьмется нагрузка на больше чем одно ядро, если вы только не снимаете gil?

Yegor
16.12.2018
16:01:47
подскажите кусок кода, который будет хорошо грузить проц

Google

Проксимов
16.12.2018
16:02:02

Tishka17
16.12.2018
16:02:10

Владимир
16.12.2018
16:02:39

Tishka17
16.12.2018
16:02:53

Bogdan (SirEdvin)
16.12.2018
16:02:54

Сергей
16.12.2018
16:03:09
корутины используются в основном для псевдопараллельного выполнения одинаковых задач, требующих некоторого ожидания. Треды позволяют делать параллельно абсолютно разные задачи, часто не связные между собой.

Проксимов
16.12.2018
16:03:10

Tishka17
16.12.2018
16:03:11

Bogdan (SirEdvin)
16.12.2018
16:03:32

Tishka17
16.12.2018
16:03:59

Bogdan (SirEdvin)
16.12.2018
16:04:15
Ну тогда между корутинами и тредами в простой ситуации не так много разницы.

Tishka17
16.12.2018
16:04:22

Сергей
16.12.2018
16:04:23
как в процессоре выполняются параллельно разные процессы? Методом сохранения/загрузки контекста для каждого процесса.

Проксимов
16.12.2018
16:04:28

Tishka17
16.12.2018
16:04:33

Маришка
16.12.2018
16:04:38

Tishka17
16.12.2018
16:04:40
Стек не резиновый

Проксимов
16.12.2018
16:04:53

Bogdan (SirEdvin)
16.12.2018
16:04:58

Google

Bogdan (SirEdvin)
16.12.2018
16:05:10
Треды в питоне в простом случае не могут выполнятся паралельно.

Vladislav
16.12.2018
16:05:23

Tishka17
16.12.2018
16:05:27

Сергей
16.12.2018
16:05:37
там тоже псевдопараллельность (количество процессов ведь много больше количества ядер). Я говорю про то, что параллельным выполнением часто называют не совсем такое

Bogdan (SirEdvin)
16.12.2018
16:06:14

Tishka17
16.12.2018
16:06:31
У них просто общая памятт
И всё
Оверхед одинаковый, это одна сущность в ядре
Если мы про линукс

Владимир
16.12.2018
16:08:17

Владимир
16.12.2018
16:08:19

Владимир
16.12.2018
16:08:38

Tishka17
16.12.2018
16:08:52

Владимир
16.12.2018
16:09:20

Tishka17
16.12.2018
16:09:34
https://stackoverflow.com/questions/807506/threads-vs-processes-in-linux
Linux uses a 1-1 threading model, with (to the kernel) no distinction between processes and threads — everything is simply a runnable task. *
первое что нагуглил

Владимир
16.12.2018
16:10:39
Да?
как минимум больше системных вызовов при мультипроцессинге, если не говорить про бОльшее потребление оперативки

Tishka17
16.12.2018
16:10:56

Google

Tishka17
16.12.2018
16:11:17
там есть особенности, но отличия не такие большие

Владимир
16.12.2018
16:11:51

Владимир
16.12.2018
16:12:21
Ну и за счёт чего же?
За счет того, что переключение контекста между процессами тяжелее, чем между потоками. К по токов общие ресурсы как никак

Tishka17
16.12.2018
16:12:42

Владимир
16.12.2018
16:12:49

Сергей
16.12.2018
16:12:50
Вы в своем споре забыли о его причине. То, что с появлением корутин треды стали не нужны. Но ведь это не так, это слишком узкий взгляд на треды

Tishka17
16.12.2018
16:13:03
вон выше ссылка
нет таких сущностей

Владимир
16.12.2018
16:13:16

Tishka17
16.12.2018
16:13:22
есть сущность "runnable task"

Bogdan (SirEdvin)
16.12.2018
16:15:09

Владимир
16.12.2018
16:15:55

Владимир
16.12.2018
16:16:47
а сущность "тред"?
При мультипроцессинге, создается копия оригинального процесса, соответственно копируется вся память, что использовалась в одном процессе в другой, понятно, что ядро это оптимизирует, но тем не менее, при трединге, тред юзает ту же область памяти. Второй процесс просто так не может залезть в память первого и наоборот.

Сергей
16.12.2018
16:16:52

Владимир
16.12.2018
16:17:29

Tishka17
16.12.2018
16:17:29
При мультипроцессинге, создается копия оригинального процесса, соответственно копируется вся память, что использовалась в одном процессе в другой, понятно, что ядро это оптимизирует, но тем не менее, при трединге, тред юзает ту же область памяти. Второй процесс просто так не может залезть в память первого и наоборот.
итого, если вы не юзаете общую кучу, они будут одинаковы

Yegor
16.12.2018
16:18:21

Lazoreth
16.12.2018
16:19:29
Народ подскажите пожалуйста - сижу тут ради практики пилю сервак на санике rpc на реббите, микросервисы все дела. Вопрос возник - а есть какое-то архитектурное решение, которое позволило бы шарить коннект к бд\реббиту между воркерами? С учётом того что воркеры по сути никак друг друга не зависят