python在调用threading创建线程时, 可以指定参数, 且可以共享变量
共享变量实例
共享的变量, 应该是全局变量
import threading
import time
def test1(list):
list.append(33)
print("test1----" + str(list))
def test2(list):
print("test2---" + str(list))
g_nums = [11, 22]
def main():
# target指定方法, args指定参数, 必须是元组形式
t1 = threading.Thread(target=test1, args=(g_nums,))
t2 = threading.Thread(target=test2, args=(g_nums,))
t1.start()
time.sleep(1)
t2.start()
time.sleep(1)
print("main--" + str(g_nums))
if __name__ == "__main__":
main()
共享变量, 可能导致冲突, ( 就像全局变量的不安全问题, 不知道在哪就被改变了), 例如
# 多个线程同时a+=1
a += 1 可以翻译为多个步骤
s = a+1 # 在执行a+1后, 时间片结束, 未赋值给a, 临时存储为s
# 另一个线程执行了a+=1, 此时a的值已经改变
a = s # 又回到当前线程, 把 s 赋值给a显然就不合理
下一小节, 将学习同步, 线程锁等知识, 解决线程不安全问题