본문 바로가기
파이썬

파이썬 스레드와 함께 전역 변수 사용

by º기록 2021. 1. 1.
반응형

스레드와 전역 변수를 어떻게 공유합니까?

내 Python 코드 예는 다음과 같습니다.

from threading import Thread
import time
a = 0  #global variable

def thread1(threadname):
    #read variable "a" modify by thread 2

def thread2(threadname):
    while 1:
        a += 1
        time.sleep(1)

thread1 = Thread( target=thread1, args=("Thread-1", ) )
thread2 = Thread( target=thread2, args=("Thread-2", ) )

thread1.join()
thread2.join()

두 스레드가 하나의 변수를 공유하도록하는 방법을 모르겠습니다.

 

해결 방법

 

thread2 에서 전역으로 a 를 선언하면 해당 함수에 로컬 인 a 를 수정하지 않습니다.

def thread2(threadname):
    global a
    while True:
        a += 1
        time.sleep(1)

thread1 에서는 a 의 값을 수정하지 않는 한 특별한 작업을 수행 할 필요가 없습니다. 필요한 경우 global a 사용)>

def thread1(threadname):
    #global a       # Optional if you treat a as read-only
    while a < 10:
        print a

 

참조 페이지 https://stackoverflow.com/questions/19790570

 

 

반응형

댓글