Найти - Пользователи
Полная версия: Слипшийся print в потоках (threading). Способы решения.
Начало » Python для новичков » Слипшийся print в потоках (threading). Способы решения.
1
Galvanize
Приветствую.
Есть проблема, когда функция работающая в потоках выводит сообщения в консоль “слипшимися”. Я решаю эту проблему с помощью оборачивания каждого сообщения в RLock.acquire()/release(). Понимаю, что жертвую тем самым скоростью работы. Красивым решения назвать это сложно, поэтому хотел бы узнать у “профи” о существующих лаконичных способах решения данной проблемы “слипания”.
Спасибо.
doza_and
:) слипание. Лаконичный способ решения модуль logging
Galvanize
=) ну да, слипание. Не придумал как назвать - в общем, когда две строки текста должны быть на разных строках, а из-за потоков они слипаются, т.к. те получают одновременный доступ к выводу. Вот придумал один из способов, вроде уже получше прежнего =)

>>> 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
o7412369815963
Вам нужно делать принт только из одного потока.
Например запустите ещё один поток с циклом print, и передавайте туда сообщения через queue из других потоков.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB