У меня есть файл python с классом httpHandler. я использую его с ThreadingMixIn следующим образом:Доступ к глобальным переменным из потока
from SocketServer import ThreadingMixIn
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
Successful_Attempts = 0
Failed_Attempts = 0
class httpHandler(BaseHTTPRequestHandler):
def do_POST(self):
.....
class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
pass
и позже я начать его следующим образом:
server = ThreadingHTTPServer(('localhost', PORT_NUMBER), httpHandler)
print 'Started httpserver on port ' , PORT_NUMBER
Так как я понимаю, класс HttpHandler, когда соединение производится, уже другой поток. Я хочу отслеживать свои темы, что-то вроде обработки статистики. Однако я не могу получить доступ к моим переменным. Кроме того, мне нужно заблокировать их, чтобы они отображали реальные значения, а не что-то неопределенное правильно.
Очень низкоуровневая идея будет создавать глобальный список и хранить в нем переменные. Но вы должны следить за тем, чтобы не писать один и тот же список одновременно с двумя разными потоками (как вы сказали, необходимо обеспечить блокировку), но если у вас есть только 2 потока (основной и некоторые рабочие), вы можете просто прочитать основной и просто писать с рабочим без проблем (и необходимость блокировки) - просто комментарий, потому что может быть лучший способ – Martin
@Martin, из того, что я видел. Очереди кажутся дефактовым способом обмена информацией между потоки в python. – John