일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 노베이스 정보처리기사 합격법
- 페페
- 주식 콜옵션
- 티스토리챌린지
- 정보처리기사
- 퀴팅
- 유튜브 성공하는법
- linux
- 고맙다트럼프
- 유튜브 기초강의
- 인간관계론
- 퀴팅의기술
- 도커
- PER
- 유튜브
- pepe the frog
- PEPE
- docker
- 이클립스
- 노베이스 정처기 공부법
- DevOps
- 슬픈 개구리
- 나스닥 개폭락
- hanspell
- 정처기
- 노베이스 정처기
- PBR
- 십새
- 가장빨리부자되는법
- 오블완
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' 카테고리의 다른 글
파이선코드 이해가안가서 풀이한것 (개인풀이) (0) | 2025.03.09 |
---|---|
파이선 롤링의 역할 | python rolling (0) | 2025.03.09 |
파이썬 언어교정 hanspell설치하기 (0) | 2025.02.17 |
ModuleNotFoundError: No module named 'Crypto' 오류 해결방법 (0) | 2024.10.15 |
JAVA 팁 (0) | 2022.08.17 |