Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Пул потоков для питона


Автор: sandello 28.4.2006, 06:52
Небольшая библиотека, предоставляющая пол потоков для питона: http://developer.berlios.de/projects/pthreadpool/.
Проба пера на питоне. Хотелось бы услышать коментарии и пожелания :-) Если будет смысл - буду дальше развивать :-)
 

Автор: Бонифаций 28.4.2006, 12:19
а чем встроенные питоновские плохи? 

Автор: bialix 1.5.2006, 22:18
Цитата(sandello @ 28.4.2006,  06:52)
Небольшая библиотека, предоставляющая пол потоков для питона: http://developer.berlios.de/projects/pthreadpool/.
Проба пера на питоне. Хотелось бы услышать коментарии и пожелания :-) Если будет смысл - буду дальше развивать :-)

Что это? Как это работает? Как его использовать? Чем оно лучше того же Twisted?

Или вы считаете, что краткого анонса достаточно? 

Автор: sandello 2.5.2006, 07:37
Цитата(Бонифаций @  28.4.2006,  14:19 Найти цитируемый пост)
а чем встроенные питоновские плохи?  

На встроенных и сделано :-)

Цитата(bialix @  2.5.2006,  00:18 Найти цитируемый пост)
Чем оно лучше того же Twisted?

Первый раз слышу  smile
На первый взгляд - тем что проще (но сильно не уверен, что лучше) :-)

Для получения небольшого примера достаточно просто запустить pthreadpool.py


Описание:
Библиотека реализует простейший пул потоков. Каждый поток умеет исполнять "задание", имеющее метод "work()", которое берет из очереди.

В библиотеке определены два класса: TPManager  и TPWorker. Первый класс реализует сам пул и предназначен для непосредственного использования в приложениях, второй класс - это рабочий поток, задача которого состоит в исполнении заданий.
Для настройки поведения пула в TPManager'е определены несколько переменных:
Код

    #максимальное количество рабочих потоков
    #max worker threads
    self.__maxthreads=1
    #минимальное количество свободных потоков
    #min worker threads
    self.__minthreads=1
    #уничтожать поток, если стоит (сек)
    #kill worker thread after ... seconds inactivity
    self.__threadtermafter=100
    #флаг, указывающий на необходимость срочного завершения работы
    self.__term=False
    #флаг, указывающий на необходимость завершения после опустошения очереди
    self.__termafterend=True
    #создавать по ... штук
    #create ... new worker threads at time
    self.__newthreadcount=1


Работа пула может быть завершена двумя способами:
1. после исчерпания всей очереди. Для этого нужно вызвать метод TPManager.termAfterEnd() с аргументом True
2. после завершения текущих заданий. Устанавливается вызовом метода TPManager.term() без аргументов.
Если режим завершения работы не определен, после исчерпания заданий пул переходит в режим ожидания.
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)