Форум сайта python.su
Спустя всего лишь месяц с небольшим выложил то, о чем говорил на pycon в Киеве.
http://asvetlov.blogspot.com/2010/11/1.html
http://asvetlov.blogspot.com/2010/11/2.html
Читайте и ругайте :)
Офлайн
Поругать могу только за кривое форматирование кода.
Похоже этот год пройдет у меня под знаком параллельности. В университетах гоняют по MPI и OpenMP, а в интернетах постоянно натыкаюсь на статьи по многопоточности-паралельности-асинхронности. Кстати, все проблемы параллельных программ очень здорово описаны в sicp в соответствующей главе :)
Кстати эрланг, clojure и прочие функциональные языки отчасти так хорошо параллеляться благодаря тому, что в них сведено к минимуму а то и вовсе отсутствуют изменяемые состояния. Для себя я выработал набор правил которым пользуюсь даже в обычных не параллельных программах: стремление к максимальной частоте функций (свести к минимуму побочные эффекты), а так же как можно большая независимость функций выполняющихся параллельно.
Офлайн
В первой части по поводу thread можно просто дать ссылку на доку, где в самом верху есть замечание от разработчиков. Будет логичное объяснение, как вы это сделали с Lock.
Во второй статье для полноты картины надо бы сделать color публичным свойством, чтобы его действительно могли внешние потоки менять.
Ну и отступы поправить в в блоке кода с очередью.
А в целом мне понравилось. Вроде понятно и логично изложено.
Офлайн
А не затруднит дать пояснение записи with self._mutex ?
Офлайн
Lexander, поправил. Спасибо.
Офлайн
plusplus, это называется context manager.
with a:
pass # do stuff
try:
a.__enter__()
pass # do stuff
a.__exit__(None, None, None)
except:
import sys
if not a.__exit__(*sys.exc_info()):
raise
Офлайн