-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