Форум сайта python.su
0
Приветствую.
Есть проблема, когда функция работающая в потоках выводит сообщения в консоль “слипшимися”. Я решаю эту проблему с помощью оборачивания каждого сообщения в RLock.acquire()/release(). Понимаю, что жертвую тем самым скоростью работы. Красивым решения назвать это сложно, поэтому хотел бы узнать у “профи” о существующих лаконичных способах решения данной проблемы “слипания”.
Спасибо.
Отредактировано Galvanize (Авг. 3, 2014 17:03:44)
Офлайн
253
:) слипание. Лаконичный способ решения модуль logging
Офлайн
0
=) ну да, слипание. Не придумал как назвать - в общем, когда две строки текста должны быть на разных строках, а из-за потоков они слипаются, т.к. те получают одновременный доступ к выводу. Вот придумал один из способов, вроде уже получше прежнего =)
>>> class Print: def out(self, string): LOCK.acquire() print string LOCK.release() >>> pr = Print() >>> pr.out('asdasdasd') asdasdasd >>> pr.out('asdasdasdas %s asdasdasd' % 'bbbbb') asdasdasdas bbbbb asdasdasd
Отредактировано Galvanize (Авг. 3, 2014 18:37:55)
Офлайн
32
Вам нужно делать принт только из одного потока.
Например запустите ещё один поток с циклом print, и передавайте туда сообщения через queue из других потоков.
Офлайн