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],))