@ (네트워크 프로그래밍)
1. 전역 변수를 수정
코드 구현
num = 100
nums = [11,22]
def test():
global num
num += 100
def test2():
nums.append(33)
print(num)
print(nums)
test()
test2()
print(num)
print(nums)
출력 :
200
[11, 22, 33]
주의
- 전역 사용할 수 있도록 기능에 사용 NUM 처음 globel 수정을 사용해야하며, nums 배열 함수에 사용되는 목록 APPEND 방법입니다 목록은 원점을 변경하지 않습니다
- 당신은 데이터의 유형 (= 번호)를 재 할당 할 경우, 다음 글로벌 수정 된 모양을 사용 그래서, 다음 재 할당되지 않습니다
멀티 스레드에서 공유 2. 전역 변수
코드 구현
import threading
g_num = 100
def test1():
global g_num
g_num += 1
print("in test1 gnum = %d" % g_num)
def test2():
print("in test2 gnum = %d" % g_num)
def main():
t1 = threading.Thread(target=test1())
t2 = threading.Thread(target=test2())
t1.start()
t2.start()
if __name__ == '__main__':
main()
输出,
부호 TEST1 = 101
에서 급속 TEST2 = 101
주의
- 우리는 동등한 가치의 두 개의 스레드를 볼 수 있습니다
- 글로벌 잠금 글로벌 변수를 사용하여, 오직 완료 한 후 발표 할 때 때문에이 +입니다
발생할 수있는 3. 멀티 스레딩 문제
두 개의 스레드 T1과 T2의 필요가 더 글로벌 변수 g_nums (기본값 0) +1 작업, T1과 T2있는 팀 g_num 플러스 10 회 있도록한다고 가정
최종 결과는 20해야한다,하지만 문제 때문에 멀티 스레딩 문제가 발생할 수 있습니다