浅谈浅谈python多线程和多线程变量共享问题介绍多线程和多线程变量共享问题介绍
1、、demo
第一个代码是多线程的简单使用,编写了线程如何执行函数和类。
import threading
import time
class ClassName(threading.Thread):
"""创建类,通过多线程执行"""
def run(self):
for i in range(5):
print(i)
time.sleep(1)
def sing():
for i in range(1,11):
print("唱歌第 %d 遍" % i)
time.sleep(1)
def dance():
for i in range(1,16):
print("跳舞第 %d 遍" % i)
time.sleep(1)
def main():
t1 = threading.Thread(target = sing)
t2 = threading.Thread(target = dance)
t = ClassName()
# 启动线程
t1.start()
t2.start()
t.start()
while True:
length = len(threading.enumerate())
print("正在运行的线程有 %s" %threading.enumerate())
if length <= 1:
break
time.sleep(1)
if __name__ == '__main__':
main()
执行结果可以看到函数 sing、dance和类在同时执行,执行效果太长就不方截图了
2、多线程共享变量、多线程共享变量
通过定义全局变量,然后再test1函数类部进行更改全局变量,test2打印全局变量。
import threading
import time
#定义全局变量
g_num = 0
def test1():
"""函数test1对全局变量进行更改"""
global g_num
for i in range(1,10):
g_num += 1
print("--- test1 线程 g_num = %d--- " % g_num)
def test2():
"""函数test2 打印全局变量"""
print("--- test2 线程 g_num = %d--- " % g_num)