19.06.09

Python: многопоточный генератор

Решил оставить блог личной территорией и выглал эту статью. Теперь она обитает тут: многопоточный генератор python.

3 коммент.:

И да — это я. комментирует...

Пардон, у меня оффтопик :) Можно ли в эклипсе (а точнее, в Zend Studio, ну так это ж почти одно и то же) замутить такой же [черный] стиль подсветки кода как у вас в бложике?

Ярослав Клюев комментирует...

На таком фоне код выглядит ужасно(по крайней мере у меня). А вообще это скорее для тех, кто плохо разбирается в английском, ибо схожих примеров хватает(=

Оффтоп:
воспользуйтесь Черновиками и сделайте что бы окно комментариев содержало текст сообщения и было в одном со всем блогом стиле(настройки, комментарии, Размещение формы для ввода комментариев: Вложенное ниже сообщение)

Анонимный комментирует...

для обмеження кількості потоків використовують семафори (threading.Semaphore) а не :
# добавляем недостающие потоки
while len(pool) < thread_limit:
th = Th(callback, queue, ret_queue)
th.setDaemon(True)
th.start()
pool.append(th)
Example: http://docs.python.org/library/threading.html#threading.Semaphore . а для того щоб дочекатись завершення потоку вартую писати шось типу: for t in pool: t.join()
замість
# ожидаем завершения потоков
while True:
if threading.activeCount() == 1:
break
time.sleep(sleep)

Ну і це код поганий бо None може бути черед значень:

# отключаем потоки
for th in pool:
queue.put(None)

і взагалі для чого створювати необмежену кількість потоків:
while len(pool) < thread_limit:
th = Th(...)

якщо можна відразу створити thread_limit потоків і не відключати їх доти поки будуть якісь завдання. а коли черга завдань закінчиться - можна написати шось типу такого:
for t in pool: t.kill = True

і в Th.run(): if self.kill: return

Взагалі є багато варіантів.