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

cpp*_*nja 8 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()
Run Code Online (Sandbox Code Playgroud)

我注意到的是两个打印输出相同的东西.为什么线程不会改变?

rob*_*lep 19

您正在执行该功能而不是传递它.试试这个:

t1 = threading.Thread(target = func1, args = (arg1, arg2))
Run Code Online (Sandbox Code Playgroud)


Mic*_*rer 6

您正在调用该函数,然后再将其提供给Thread构造函数。另外,您给它指定了错误的参数(Thread构造函数的第一个位置参数是group)。假设func1返回的结果None与调用threading.Thread(None)或等效threading.Thread()线程文档中对此进行了详细说明。

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

t1 = threading.Thread(target=func1, args=(arg1, arg2))
t1.start()
t1.join()
Run Code Online (Sandbox Code Playgroud)