-python 구현 멀티 태스킹 - 멀티 스레드 공유 전역 변수 (2.1.3)

@ (네트워크 프로그래밍)

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해야한다,하지만 문제 때문에 멀티 스레딩 문제가 발생할 수 있습니다
여기에 그림 삽입 설명

추천

출처www.cnblogs.com/simon-idea/p/11317933.html