在采用多线程时,如果参数的传递方式不一样,我发现代码执行的结果也不一样,因为是初学,我实在是找不出问题,请知道的老师们解释一下。
第一种情况:
import threading
import time, datetime
def saySorry(Name):
print(Name, datetime.datetime.now())
time.sleep(1)
if __name__ == "__main__":
for i in range(5):
t1 = threading.Thread(target=saySorry,args=("Thread_1",))
t2 = threading.Thread(target=saySorry,args=("Thread_2",))
t1.start() # 启动线程,即让线程开始执行
t2.start()
这一种我自调用Threading方法时,采用的args传递参数的方式,运行代码的结果如下:
我发现代码执行的结果在一瞬间就执行完了,没有体现出我写这段代码的初衷
然后是第二种:
import threading
import time, datetime
def saySorry(Name):
print(Name, datetime.datetime.now())
time.sleep(1)
if __name__ == "__main__":
for i in range(5):
t1 = threading.Thread(target=saySorry("Thread_1"))
t2 = threading.Thread(target=saySorry("Thread_2"))
t1.start() # 启动线程,即让线程开始执行
t2.start()
这段代码的运行效果如下:
代码按照我的初衷运行下去了,我很想知道为什么传递参数的方式不同,会影响代码执行的结果