Являются ли переменные экземпляра Python потокобезопасными?Python

Программы на Python
Ответить
Anonymous
 Являются ли переменные экземпляра Python потокобезопасными?

Сообщение Anonymous »

Код: Выделить всё

class DemoClass():

def __init__(self):
#### I really want to know if self.Counter is thread-safe.
self.Counter = 0

def Increase(self):
self.Counter = self.Counter + 1

def Decrease(self):
self.Counter = self.Counter - 1

def DoThis(self):
while True:
Do something

if A happens:
self.Increase()
else:
self.Decrease()

time.sleep(randomSecs)

def DoThat(self):
while True:
Do other things

if B happens:
self.Increase()
else:
self.Decrease()

time.sleep(randomSecs)

def ThreadSafeOrNot(self):
InterestingThreadA = threading.Thread(target = self.DoThis, args = ())
InterestingThreadA.start()

InterestingThreadB = threading.Thread(target = self.DoThat, args = ())
InterestingThreadB.start()
Я столкнулся с той же ситуацией, что и выше. Я действительно хочу знать, является ли это потокобезопасным для self.Counter, а если нет, какие у меня есть варианты? Я могу думать только о threading.RLock(), чтобы заблокировать этот ресурс, есть ли идея получше?

Подробнее здесь: https://stackoverflow.com/questions/830 ... hread-safe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»