Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2011 12:26:25

rebrovsv
От:
Зарегистрирован: 2011-11-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как задействовать больше 1 ядра

Здравствуйте
Сразу извиняюсь, если повторяюсь либо задаю глупый вопрос
Сам не программист питона, но использую в работе приложение на нем написанное
Приложение считает много и долго, как я выяснил, питон использует только 1 ядро для вычислений ((
Как-то не дружат у него потоки

подскажите пожалуйста, как можно это вылечить и лечиться ли в принципе?

Накопал, что есть альтернативные версии вез без GIL, типа python-safethread
но ставить ее боюсь, т.к. компьютер рабочий, и выводить его из строя как то не хочется даже на время…

Подскажите пжлст, подхватит ли интерпретатор от python-safethread прогу написанную на классическом питоне?
И дает ли это производительности на самом деле?
Если он мне с 3х незадействованных сейчас ядер наберет еще хотя бы 100% производительности, было бы круто!

Спасибо



Офлайн

#2 Ноя. 28, 2011 12:46:26

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

как задействовать больше 1 ядра

Лечится в CPython использованием модуля multiprocessing
И более подробным изучением механизма GIL в Python



Офлайн

#3 Ноя. 28, 2011 13:28:35

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

как задействовать больше 1 ядра

1. IronPython, Jython, и вроде у PyPy что-то есть по этому поводу.
2. Раскидывать задачи по процессам, а не по потокам.
3. Вынести задачу за пределы интерпретатора (Си в отдельных потоках).
4. Кажется можно несколько интерпретаторов в одном процессе запустить (в разных потоках, например), но этот вопрос мне не интересен и я его не изучал.

..bw



Офлайн

#4 Ноя. 28, 2011 13:30:20

rebrovsv
От:
Зарегистрирован: 2011-11-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как задействовать больше 1 ядра

“И более подробным изучением механизма GIL в Python”
мне как пользователю нужно изучать работу GIL что бы програмка нормально работала? =) как-то не хочется…

“Лечится в CPython использованием модуля multiprocessing”
мне достаточно будет поставить интерпретатор CPython что бы он подхватил програмку? или в коде использование этой библиотеки multiprocessing должно быть явно указано и код под нее заточен должен быть?



Офлайн

#5 Ноя. 28, 2011 13:31:51

rebrovsv
От:
Зарегистрирован: 2011-11-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как задействовать больше 1 ядра

bw
1. IronPython, Jython, и вроде у PyPy что-то есть по этому поводу.
2. Раскидывать задачи по процессам, а не по потокам.
3. Вынести задачу за пределы интерпретатора (Си в отдельных потоках).
4. Кажется можно несколько интерпретаторов в одном процессе запустить (в разных потоках, например), но этот вопрос мне не интересен и я его не изучал.

..bw
ох блин, это мне теперь еще и питон курить ко всему (((((((
не было печали =(((
спасибо



Офлайн

#6 Ноя. 28, 2011 13:39:12

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

как задействовать больше 1 ядра

rebrovsv
мне как пользователю нужно изучать работу GIL что бы програмка нормально работала? smile как-то не хочется…
Если как пользователю, то простой ответ “никак”.



Офлайн

#7 Ноя. 28, 2011 15:07:29

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

как задействовать больше 1 ядра

> еще и питон курить ко всему
Что значит “питон курить”? Знаешь один императивный язык – знаешь их все. Ты же не либу для общего пользования пишешь, тонкости тебе знать не нужны. Берёшь справочник и читаешь про multiprocessing из батареек.

> и код под нее заточен должен быть?
Да, должен.

..bw



Офлайн

#8 Ноя. 28, 2011 16:17:28

rebrovsv
От:
Зарегистрирован: 2011-11-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

как задействовать больше 1 ядра

“Если как пользователю, то простой ответ ”никак“ ”
спасибо, понял…. печально… значит вопрос откладывается до появления свободного времени или пока не поможет знакомый питоно-вод =))

“Что значит ”питон курить“? ”
“курить мануалы” == “разбираться до покраснения глаз, изучая инструкции ” извините, сленг ….

“Берёшь справочник и читаешь про multiprocessing из батареек.”
да уж и без этого хватает, что почитать, была бы возможность читать, не спрашивал бы на форуме =)

всем большое спасибо!



Офлайн

#9 Ноя. 28, 2011 17:32:43

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

как задействовать больше 1 ядра

Если как пользователю, то простой ответ “никак” - Даже еще хуже. Тут все советы как треды эффективно повключать - а вообще код параллелится? Вы посмотрите там используются модули threading subprocess multiprocessing если нет - то труба. Далеко не всякий код можно распараллелить. Если авторы кода не предусмотрели, то вам не просто курить питон, а переделывать алгоритмы - а это совсем другая песня.



Офлайн

#10 Ноя. 28, 2011 19:38:16

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2796
Репутация: +  185  -
Профиль   Отправить e-mail  

как задействовать больше 1 ядра

В Jython и IronPython вроде отсутствует GIL по этому можно попробовать их использовать вместо CPython-а.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version