Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒Python⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐SQL\T-SQL
⇐FreeBSD and Nix
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

Python: простой пример работы с процессами и потоками


Очень простой для понимания пример запуска параллельно нескольких потоков.

 

Простой пример с запуском нескольких потоков одновременно:

 

Конечно функционал модуля threading намного богаче, есть возможность работы с блокировками:

 

Модуль Queue имеет три типа очередей, разница заключается в порядоке получаемых значений:

Отдельное спасибо за перевод по этому модулю данной страницеhttp://john16blog.blogspot.co.il/2012/05/python-queue.html

class Queue.Queue(maxsize)

Очередь типа FIFO (First Input First Output - первым вошел, первым вышел). 

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

class Queue.LifoQueue(maxsize)
Класс реализующий очередь LIFO, или по другому "стэк"(Last Input First Output - последним вошел, первым вышел).

maxsize аналогичен параметру в классе Queue.Queue.

class Queue.PriorityQueue(maxsize)
Класс реализующий очередь с приоритетами. Параметр maxsize аналогичен параметру в классе Queue.Queue. 

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

И отдельное спасибо за краткую и удобную справку: http://www.py-my.ru/post/4bfb3c691d41c846bc000066#!

Queue.Queue() - отдает значения по принципу "первый пришел - первый ушел"
Queue.LifoQueue() - "последний пришел - первый ушел"
Queue.put(item [ , block [ , timeout]]) - при добавлении значения можно блокировать очередь, что-б не возникало коллизий
Queue.get([ block [ , timeout]]) - при получении значения можно блокировать очередь, что-б одновременной другой поток не выхватил данные, данная ф-ия ждет пока не появятся данные, при истечении тайм аута, если он задан, срабатывает exception
Queue.get_nowait() - взять значение без ожидания, если данных нет то срабатывает exception Queue.Empty

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru