线程类不适用于简单的for循环

时间:2019-03-02 11:18:19

标签: python-3.x multithreading

我试图理解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对象似乎没有效果

0 个答案:

没有答案