Темы в Python - PullRequest
       43

Темы в Python

6 голосов
/ 28 декабря 2008

Общий учебник или хороший ресурс о том, как использовать потоки в Python?

Когда использовать потоки, как они эффективны, и какой общий фон для потоков [специфичен для Python]?

Ответы [ 4 ]

13 голосов
/ 28 декабря 2008

Потоки следует использовать, когда вы хотите, чтобы две вещи запускались одновременно, или чтобы что-то запускалось в фоновом режиме, не замедляя основной процесс. Я рекомендую использовать темы только в случае необходимости. Как правило, они усложняют программу.
Основная документация по нарезке резьбы здесь: http://docs.python.org/library/threading.html
Вот некоторые примеры:
http://www.devshed.com/c/a/Python/Basic-Threading-in-Python/1/
http://linuxgazette.net/107/pai.html
http://www.wellho.net/solutions/python-python-threads-a-first-example.html

8 голосов
/ 28 декабря 2008

Прежде чем тратить время и силы на написание многопоточного приложения на Python, следует помнить, что существует Global Interpreter Lock (GIL), так что вы фактически не будете запускать более одного потока за один раз.

Это делает многопоточность непригодной для попыток использовать преимущества нескольких ядер или процессоров. Вы можете получить некоторое ускорение от мультиплексирования других ресурсов (сеть, диск, ...), но это никогда не было особенно заметно в моем опыте.

В общем, я использую потоки только тогда, когда одновременно происходит несколько логически отдельных задач, и все же я хочу, чтобы они все были в одной и той же виртуальной машине. Поток извлекает данные из Интернета и помещает их в очередь, в то время как другой поток выскакивает из очереди и записывает в базу данных, что-то в этом роде.

В Python 2.6 появился новый модуль multiprocessing, который довольно крутой - он имеет интерфейс, очень похожий на модуль threading, но на самом деле порождает новые процессы ОС, обходя GIL.

3 голосов
/ 28 декабря 2008

Существует фантастический PDF, Учебник по программированию потоков с Python от Норман Мэтлофф и Фрэнсис Хсу из Калифорнийского университета, Дэвис.

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

1 голос
/ 28 декабря 2008

Есть несколько учебных пособий здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...