import threading
import time
def test(sleep_time):
num = 1
time.sleep(sleep_time)
num += 1
print('-----(%s)---num=%d--sleep=%d' % (threading.current_thread(), num, sleep_time))
t1 = threading.Thread(target=test, args=(5,)) # 创建线程的代码在前面则为线程1,当不定义名称时默认为Thread-1
t2 = threading.Thread(target=test, args=(1,)) # 创建线程的代码在前面则为线程2,当不定义名称时默认为Thread-2
# 默认名称与定义位置有关,与调用(start())位置没关系
t1.start()
t2.start()
# 虽然线程1被先调用,但是sleep5秒,所以首先打印出来的是线程2的输出
输出:
-----(<Thread(Thread-2, started 140443820586752)>)---num=2--sleep=1
-----(<Thread(Thread-1, started 140443812194048)>)---num=2--sleep=5
小总结
- 在多线程开发中,全局变量是多个线程都共享的数据,而局部变量等是各自线程的,是非共享的