У меня есть следующий код, который подсчитывает, сколько раз я посещаю нить. Код работает нормально, но я хочу узнать, можно ли реализовать это без какой-либо глобальной переменной.Подсчитайте, сколько раз я посещаю нить
import threading
import lib.logging
import time
count = 0
class Monitor(threading.Thread):
def __init__(self, count):
threading.Thread.__init__(self)
def run(self):
global count
count+=1
lib.logging.debug ("Count is: " + str(count))
def main():
for i in xrange(3):
t1 = Monitor(count)
t2 = Monitor(count)
t1.start()
t2.start()
t1.join()
t2.join()
time.sleep(3)
print "done"
Большое спасибо
Как конкретно вы хотите отследить его? Существует 'queue' и' pipe' для передачи данных между потоками напрямую, и 'Event' и' Condition', если вы хотите использовать управляемую событиями модель. –
Можем ли мы получить дополнительную информацию? Что такое t1 и t2? Если вы хотите, чтобы count не был глобальным, вам нужно отображать его на уровне, который имеет доступ к местам, которые он может найти. В идеале, если оператор печати можно перенести на тот же уровень, что и основная функция, а затем добавить поле self.count в класс Monitor, может быть функция, которая проверяет значения count из всех классов монитора, а затем печатает сумма, если она изменилась. – mbdavis