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

2024-05-12 23:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正试图弄清楚线程在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()

我注意到两个指纹输出的是一样的。为什么线没变?


Tags: 代码initdefcurrent线程threadclassfunc
2条回答

您正在执行函数,而不是传递它。请改为:

t1 = threading.Thread(target = func1, args = (arg1, arg2))

在将函数赋给Thread构造函数之前,您正在调用它。 另外,您给出的参数是错误的(线程构造函数的第一个位置参数是group)。假设func1返回None,则您所做的操作等同于调用threading.Thread(None)threading.Thread()。 这在threading docs中有更详细的解释。

要使代码正常工作,请尝试以下操作:

t1 = threading.Thread(target=func1, args=(arg1, arg2))
t1.start()
t1.join()

相关问题 更多 >