반응형
좋습니다. 먼저 다음 코드를 확인하세요.
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 ()
만 생각할 수 있습니다. 더 좋은 생각이 있습니까?
해결 방법
잠금, RLock, 세마포, 조건, 이벤트 및 대기열을 사용할 수 있습니다.
And this article helped me a lot.
참조 페이지 https://stackoverflow.com/questions/8309902
반응형
'파이썬' 카테고리의 다른 글
파이썬 OOP : getter / setter 메서드 (0) | 2020.09.22 |
---|---|
파이썬 numpy의 2D 배열에서 특정 위치에 행을 삽입합니까? (0) | 2020.09.22 |
파이썬 Insert list into my database using Python (0) | 2020.09.22 |
파이썬 Python을 사용하여 웹 사이트에 로그인 (0) | 2020.09.22 |
파이썬 Python : 'math'라는 이름이 정의되지 않았습니다. 오류? (0) | 2020.09.22 |
댓글