我试图理解python中线程的基本作用,并且从原理上讲,这一切都是有意义的。但是,我尝试运行一个简单的程序,只是为了测试我的理解是否正确,并使用以下代码:
def somefunct_1():
for i in range(10):
time.sleep(2)
print(i)
def somefunct_2():
for s in ascii_lowercase:
time.sleep(1)
print(s)
t_1 = threading.Thread(target = somefunct_1())
t_2 = threading.Thread(target = somefunct_2())
t_1.start()
t_2.start()
我希望看到类似的东西: 1个 一种 b 2 C d 3 ...
但是我得到的是不使用Thread类就可以得到的输出:1 2 3 4 ... a b c d ...
现在,我尝试修改以使用其他示例
def print_time( threadName, r = [1,2,3,4,5,6,7,8,9]):
count = 0
for i in r:
print(i)
try:
t_1 = threading.Thread(target = print_time, args = ("Thread-1", ) )
t_2 = threading.Thread( target = print_time, args = ("Thread-2", ) )
t_1.start()
t_2.start()
except:
print ("Error: unable to start thread")
while 1:
pass
这按预期执行:1 2 3 4 1 5 2 6 3 4 ...
这确实令人困惑,因为在第一个示例中,构造Thread对象似乎没有效果