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()
我有一个从多个线程调用的函数,但是不是并行执行,而是按顺序执行。有什么建议吗?
答案 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],))