线程似乎是按Python顺序执行的


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()

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

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

此:

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

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

文档非常清楚:

target是run((方法要调用的可调用对象。默认为None,表示不调用任何内容。

您应该将可调用的直接传递给Thread,并将参数分别传递给:

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

最新更新