일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 오블완
- 정처기
- 정보처리기사
- 노베이스 정처기 공부법
- PBR
- 가장빨리부자되는법
- 노베이스 정처기
- 버튜버 목소리 만들기
- 유튜브 기초강의
- 인간관계론
- linux
- pepe the frog
- voice changer
- 마인드 ㅊㅇ
- DevOps
- 도커
- 노베이스 정보처리기사 합격법
- 유튜브 성공하는법
- 구동의 아침
- PEPE
- 이클립스
- 페페
- rsi 보조지표
- 마인드 차이
- docker
- 티스토리챌린지
- 슬픈 개구리
- 유튜브
- PER
- 스파이닝 탑
Archives
- Today
- Total
실패는 성공을 위한 밑거름
파이썬에서 스레드로 동일한 함수사용할때 전역변수 처리 본문
방법 1: 로컬 변수 사용
각 스레드가 자신만의 로컬 변수를 생성하여 사용하는 방식입니다. 이 경우, 전역 변수는 사용하지 않고, 각 스레드가 로컬 변수를 통해 자신만의 값을 유지하게 됩니다.
import threading
import time
def thread_function(name, local_value):
# local_value를 통해 각 스레드가 고유한 값을 유지
for _ in range(5):
print(f"Thread {name}: local_value = {local_value}")
time.sleep(1)
# 각 스레드에서 사용할 로컬 값 설정
thread_a_value = 1
thread_b_value = 2
# 스레드 생성 및 시작
thread_a = threading.Thread(target=thread_function, args=("A", thread_a_value))
thread_b = threading.Thread(target=thread_function, args=("B", thread_b_value))
thread_a.start()
thread_b.start()
thread_a.join()
thread_b.join()
출력 예시
Thread A: local_value = 1
Thread B: local_value = 2
Thread A: local_value = 1
Thread B: local_value = 2
...
방법 2: 클래스 사용
스레드의 상태를 클래스의 인스턴스 변수로 관리하면, 각 스레드가 객체의 속성을 통해 독립적으로 상태를 유지할 수 있습니다
import threading
import time
class MyThread(threading.Thread):
def __init__(self, name, value):
super().__init__()
self.name = name
self.local_value = value
def run(self):
for _ in range(5):
print(f"Thread {self.name}: local_value = {self.local_value}")
time.sleep(1)
# 스레드 생성
thread_a = MyThread("A", 1)
thread_b = MyThread("B", 2)
# 스레드 시작
thread_a.start()
thread_b.start()
thread_a.join()
thread_b.join()
출력 예시
Thread A: local_value = 1
Thread B: local_value = 2
Thread A: local_value = 1
Thread B: local_value = 2
...
스레드로 똑같은 함수를 돌릴경우 전역변수 공유문제는 클래스로 처리하는편이 좋아보인다.
지피티가 그랬음ㅇㅇ..
'devops > back-end' 카테고리의 다른 글
ModuleNotFoundError: No module named 'Crypto' 오류 해결방법 (0) | 2024.10.15 |
---|---|
JAVA 팁 (0) | 2022.08.17 |