Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 3, 2009 08:49:46

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Threads in threads

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



Офлайн

#2 Фев. 3, 2009 09:19:05

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Threads in threads

lorien
http://docs.python.org/library/threading.html
Треды - это не форки. Форк - это когда процесс раздваивается, а треды - это нити, выполняющиеся параллельно внутри одного процесса.
Насчет форков теперь понятно :)
А вот насчет threads то мне более-менее понятно, кстати пользуюсь моделью многопоточности, описанной вами :)
Мне вот просто более интересен процесс, когда внутри самого треда создаются еще несколько тредов - вчерась пробовал такое сделать, с ошибками отвоевался, но вот подьема скорости так и не увидел =\

Нельзя ли пример, где такое воплощено в реальность безо всякой заумности :)

Пример того, что вчера получилось предоставить не могу, так как со злости снес все к едреней фене и решил, что буду переделывать с нуля :)



Офлайн

#3 Фев. 5, 2009 04:57:13

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

Threads in threads

lorien
Форк - это когда процесс раздваивается
Хм… Никогда не задумывался, но питоне просто нет вилок. А как красиво бы было…
if fork():
work()
elif fork():
work()
else:
work()
diam123
но вот подьема скорости так и не увидел
И не увидишь.
ИМХО, это самый большой дефект этого языка, ограничивающий его применение… И имя ему GIL (Global Interpreter Lock). Вернее это дефект не языка, а конкретной реализации – CPython. Я так надеялся, что в тройке от него избавяться… Но нет. И это прискорбно.



Офлайн

#4 Фев. 6, 2009 00:43:06

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Threads in threads

ZZZ
И имя ему GIL (Global Interpreter Lock). Вернее это дефект не языка, а конкретной реализации – CPython.
Это не дефект, а фича. Отсутствие GIL решает одни проблемы, но порождает другие, что в своё время доказал вариант CPython с локальными локами.



Офлайн

#5 Фев. 6, 2009 01:55:36

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Threads in threads

lorien если ты про multiprocessing, то он есть и в 2.6, а также есть его порт под 2.5, неплоха штука)
+не вижу проблемы с запуском потока в потоке
по поводу скорости - форки конечно быстрее будут, но говорить что треды в питоне бесполезны и GIL всё блокирует, как минимум глупо.
по поводу “что будет если выкинуть GIL?” предлогаю погуглить на тему http://code.google.com/p/python-safethread/ , например в рассылке по питону диалог GvR с автором, чтоб было понятно к чему приводит удаление GIL и использвоание native thread, кстати вот в Ruby 1.9 стали использовать родные треды, думаю теперь сие поделие ещё чаще будет падать + портировать на другие архитектуры станет сложнее.

Офлайн

#6 Фев. 6, 2009 02:06:52

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Threads in threads

http://code.google.com/p/python-distributed/
ещё ссылка по сабжу. набор всяких бенчмарков

Офлайн

#7 Фев. 6, 2009 03:12:06

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

Threads in threads

lorien
Почему нет?
http://docs.python.org/library/os.html#os.fork
Хм… Спасибо, буду знать… Но в реали такое не использовать…

Daevaorn
Это не дефект, а фича. Отсутствие GIL решает одни проблемы, но порождает другие, что в своё время доказал вариант CPython с локальными локами.
Помним, разбирали… Вот только если бы нормально можно было загрузать несколько ядер… Блин, multiprocessing мне кажется не очень удобным и красивым! Но выбора в общем-то нет.

slav0nic
http://code.google.com/p/python-distributed/
ещё ссылка по сабжу. набор всяких бенчмарков
Сенкс, глянем…



Офлайн

#8 Фев. 9, 2009 20:48:57

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Threads in threads

slav0nic
+не вижу проблемы с запуском потока в потоке
А можно плиз пример кода , где это работает, я пытался создать локальный queue, и передавал его в потоки, по идее оно должно было бы дать ускорение, но я его не увидел :(



Офлайн

#9 Фев. 9, 2009 22:36:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Threads in threads

Ускорения не будет - см. GIL
Потоки в Питоне - способ решить проблему блокирующих вызовов. И ничего более. На двух ядрах одновременно процесс на Питоне исполнятся не будет.



Офлайн

#10 Фев. 10, 2009 04:47:17

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

Threads in threads

diam123 разберись с multiprocessing, если тебе нужен именно выигрышь, а не просто удобство, даваемое нитями. Да, фактически нити в питоне созданы для удобства и красоты архитектурных решений, а не для выигрыша производительности. И в этом весь питон.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version