Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 25, 2015 00:29:43

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

GIL

xneo
Если я ошибаюсь и питон (именно CPython) каким-то образом всё же может использовать в одном процессе весь CPU, покажите где я ошибаюсь.
Давайте конкретнее. Мощь CPU. Это счетные задачи разного вида. Так? У них код обычно такой:

import numpy as np
a1=np.ones((10000,10000))
b1=np.ones((10000,10000))
a2=np.ones((10000,10000))
b2=np.ones((10000,10000))
for i in range(50):
   c1=np.dot(a1,b1)
   c2=np.dot(a2,b2)
  ....
По условию вы нашли куски кода которые можно независимо выполнить ну тут эти скаляные произведения. Это очевидно нужно вообще в любом языке.

Дальше попробуйте использовать многострадальный threding. Да есть GIL. Но вы обнаружите что этот питоновский код отлично грузит все ядра. И считает тоже быстрее в многопоточном режиме.

Почему? Потому что любая числодробильная задача включает много кусков “native” кода. А на этот код ограничения не распространяются. Более того, хорший “native” код уже распараллелен. Поэтому в самом питоне часто вообще треды не надо создавать.

Имплантировать “native ” в питон вообще не составляет труда. Таких модулей очень много, потчи на любые задачи. Надо будет - сами сделаете в пару строчек.

Собственно вот что вы хотели. Один процесс и эффективная загрузка всех ядер.
А на чистом питоне да, такой возможности нет.
Но в реальных проектах практически не бывает чистого питона.



Офлайн

#2 Сен. 25, 2015 01:35:24

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

GIL

Да, 4kpt_III, отвечать ему, это херня. Больше не буду.
Если эта херня и правда была в топе фриланса, то мне страшно представить, кто ж ещё там был…



Офлайн

#3 Сен. 25, 2015 02:03:32

xneo
Зарегистрирован: 2015-09-20
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

GIL

ZZZ, Солнышко, не дуйся. Ты же первый начал грубить

Офлайн

#4 Сен. 25, 2015 02:16:09

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

GIL

ZZZ
Не порть карму. Я же тебе уже сказал. Это вопрос из разряда: а можно ли к самолету прицепить прицеп? И если теоретически можно, то где посмотреть раскраски.

Офлайн

#5 Сен. 25, 2015 02:27:23

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

GIL

4kpt_III, да чем я её порчу? Если человек не умеет случать, то грош – его цена. Не нужен такой питонщик. Пусть дальше сайты-визитки на вордпрессе делает… :-)



Офлайн

#6 Сен. 25, 2015 02:31:50

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

GIL

ZZZ
да чем я её порчу

Да тем, что объясняешь по 2 раза вещи, которые после первого объяснения хороший программист и так поймет. Только время свое тратишь. Лучше бы по хенгауту лясы поточили

ZZZ
Не нужен такой питонщик.

Ну почему же сразу не нужен… Хотя да. Все же не нужен.

Отредактировано 4kpt_III (Сен. 25, 2015 02:34:01)

Офлайн

#7 Сен. 25, 2015 02:38:14

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

GIL

FishHook
py.user.next
То, что Firefox падает, - так они его переписали на Java
ЩИТО?
А можно пруф?
Это где-то читал.

https://ru.wikipedia.org/wiki/Mozilla_Firefox
https://ru.wikipedia.org/wiki/XUL
Возможно, это XUL, но суть в том, что окна и вкладки стали медленно открываться. Вся программа в целом стала какой-то неповоротливой.
Строки из top:
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
1525 guest 20 0 1185168 304756 54952 S 0,0 15,8 2:48.95 firefox
1969 guest 20 0 359908 30564 16668 S 0,0 1,6 0:01.64 emacs
1990 guest 20 0 750232 176620 36776 S 0,0 9,2 0:04.11 thunderbird
2055 guest 20 0 408812 54188 21364 S 0,0 2,8 0:02.54 gimp-2.8
Больше никто столько памяти не жрёт.

JOHN_16
Какие из этого выводы можно сделать - что парсер HTML написан на Java.
Где-то читал, что переписали его на Java, а потом поставил и там значительно изменился дизайн. Вот я и подумал, что он теперь на Java. Тормознутость окон меня ещё больше в этом убедила.



Офлайн

#8 Окт. 28, 2015 20:00:31

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

GIL

Вот в этом вся суть вопроса. Если я ошибаюсь и питон (именно CPython) каким-то образом всё же может использовать в одном процессе весь CPU, покажите где я ошибаюсь.
Может. GIL ограничивает работу только python-кода, он не ограничивае работу C-кода т.е. любого фунционала вынесенного в бинарные расширения. Хорошоий тому пример всем известная библиотека lxml. Можно загрузить все ядра процессора одним python процессом, который в нескольких тредах будет использовать lxml. Другой пример, использование библиотеки numpy для перемножения матриц. Точно так же можно загрузить все ядра процессора. Возможно, ты что-то другое спрашивал, лень весь топик перечитывать :)

Офлайн

#9 Окт. 28, 2015 21:29:19

xneo
Зарегистрирован: 2015-09-20
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

GIL

lorien
Может. GIL ограничивает работу только python-кода, он не ограничивае работу C-кода т.е.
Конечно, если потоки будут работать на стороне внешней библиотеки, тогда да. Библиотека получает входные параметры и, если в данный момент не обращается к объектам/функциям питона, может отпустить GIL.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version