@(ネットワークプログラミング)
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にする必要がありますが、問題はマルチスレッドの問題に発生する可能性があります