Python:线程中的运行函数不会修改current_thread()

时间:2013-03-17 12:26:56

标签: python multithreading

我正在尝试弄清楚线程如何在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()

我注意到两个印刷品都输出相同的东西。为什么线程不会改变?

2 个答案:

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