我正在尝试弄清楚线程如何在python中运行。
我有以下代码:
def func1(arg1, arg2):
print current_thread()
....
class class1:
def __init__():
....
def func_call():
print current_thread()
t1 = threading.Thread(func1(arg1, arg2))
t1.start()
t1.join()
我注意到两个印刷品都输出相同的东西。为什么线程不会改变?
答案 0 :(得分:19)
您正在执行该功能而不是传递它。试试这个:
t1 = threading.Thread(target = func1, args = (arg1, arg2))
答案 1 :(得分:4)
在将函数提供给Thread
构造函数之前,您正在调用该函数。
此外,您将它作为错误的参数(Thread构造函数的第一个位置参数是group
)。假设func1
返回None
您正在做的事情等同于调用threading.Thread(None)
或threading.Thread()
。
这在threading docs。
要使代码正常运行,请尝试以下方法:
t1 = threading.Thread(target=func1, args=(arg1, arg2))
t1.start()
t1.join()