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