线程似乎按顺序执行

时间:2020-09-10 15:57:28

标签: python multithreading

from threading import Thread 
def test_first(*args):
    '''
    some code 
    :param args: 
    :return: 
    '''
td_num = Thread(target=test_first([1,2,3,4,5]))
td_char = Thread(target=test_first(['A','B','C','D','E']))
td_welcome = Thread(target=test_first("Welcome"))

td_num.start()
td_char.start()
td_welcome.start()

td_num.join()
td_char.join()
td_welcome.join()

我有一个从多个线程调用的函数,但是不是并行执行,而是按顺序执行。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

将函数传递给Thread时,您正在调用这些函数。

此:

Thread(target=test_first([1,2,3,4,5]))

首先调用函数test_first(),然后将函数的结果传递给Thread()。这意味着该函数将在创建线程之前被调用并完成。

docs很清楚:

target是run()方法要调用的可调用对象。 默认为无,表示什么都不会被调用。

您应该改为将可调用对象直接传递给Thread并分别传递参数:

td_num = Thread(target=test_first, args=([1,2,3,4,5],))