Найти - Пользователи
Полная версия: Threads in threads
Начало » Python для новичков » Threads in threads
1 2
diam123
Господа, никто не подскажет, где можно доходчиво почитать и посмотреть на примерах такое чудо ?
Насколько я понимаю, это называется форки(вилки). Вот вчера захотел попробовать, но нифига не получилось :(
diam123
lorien
http://docs.python.org/library/threading.html
Треды - это не форки. Форк - это когда процесс раздваивается, а треды - это нити, выполняющиеся параллельно внутри одного процесса.
Насчет форков теперь понятно :)
А вот насчет threads то мне более-менее понятно, кстати пользуюсь моделью многопоточности, описанной вами :)
Мне вот просто более интересен процесс, когда внутри самого треда создаются еще несколько тредов - вчерась пробовал такое сделать, с ошибками отвоевался, но вот подьема скорости так и не увидел =\

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

Пример того, что вчера получилось предоставить не могу, так как со злости снес все к едреней фене и решил, что буду переделывать с нуля :)
ZZZ
lorien
Форк - это когда процесс раздваивается
Хм… Никогда не задумывался, но питоне просто нет вилок. А как красиво бы было…
if fork():
work()
elif fork():
work()
else:
work()
diam123
но вот подьема скорости так и не увидел
И не увидишь.
ИМХО, это самый большой дефект этого языка, ограничивающий его применение… И имя ему GIL (Global Interpreter Lock). Вернее это дефект не языка, а конкретной реализации – CPython. Я так надеялся, что в тройке от него избавяться… Но нет. И это прискорбно.
Александр Кошелев
ZZZ
И имя ему GIL (Global Interpreter Lock). Вернее это дефект не языка, а конкретной реализации – CPython.
Это не дефект, а фича. Отсутствие GIL решает одни проблемы, но порождает другие, что в своё время доказал вариант CPython с локальными локами.
slav0nic
lorien если ты про multiprocessing, то он есть и в 2.6, а также есть его порт под 2.5, неплоха штука)
+не вижу проблемы с запуском потока в потоке
по поводу скорости - форки конечно быстрее будут, но говорить что треды в питоне бесполезны и GIL всё блокирует, как минимум глупо.
по поводу “что будет если выкинуть GIL?” предлогаю погуглить на тему http://code.google.com/p/python-safethread/ , например в рассылке по питону диалог GvR с автором, чтоб было понятно к чему приводит удаление GIL и использвоание native thread, кстати вот в Ruby 1.9 стали использовать родные треды, думаю теперь сие поделие ещё чаще будет падать + портировать на другие архитектуры станет сложнее.
slav0nic
http://code.google.com/p/python-distributed/
ещё ссылка по сабжу. набор всяких бенчмарков
ZZZ
lorien
Почему нет?
http://docs.python.org/library/os.html#os.fork
Хм… Спасибо, буду знать… Но в реали такое не использовать…

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

slav0nic
http://code.google.com/p/python-distributed/
ещё ссылка по сабжу. набор всяких бенчмарков
Сенкс, глянем…
diam123
slav0nic
+не вижу проблемы с запуском потока в потоке
А можно плиз пример кода , где это работает, я пытался создать локальный queue, и передавал его в потоки, по идее оно должно было бы дать ускорение, но я его не увидел :(
Андрей Светлов
Ускорения не будет - см. GIL
Потоки в Питоне - способ решить проблему блокирующих вызовов. И ничего более. На двух ядрах одновременно процесс на Питоне исполнятся не будет.
ZZZ
diam123 разберись с multiprocessing, если тебе нужен именно выигрышь, а не просто удобство, даваемое нитями. Да, фактически нити в питоне созданы для удобства и красоты архитектурных решений, а не для выигрыша производительности. И в этом весь питон.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB