首页 > 解决方案 > 为什么线程会自动运行?

问题描述

from threading import Thread
class myclass:
    def __init__(self):
        print("Hey there, i am constructor")
    def rn(self):
        print("okk")
    
myobj=myclass()
mythread=Thread(target=myobj.rn())

在上面的代码中,我只创建了一个线程,但我没有使用 start 方法,那么为什么它正在运行?

标签: pythonmultithreading

解决方案


线程库上的文档

类 threading.Thread

target是 run() 方法调用的可调用对象。

你正在传递myobj.rn(),它什么都不返回。由于您包含(),因此您正在调用 rn 并将结果作为target. 删除()以传递对可调用对象的引用:

from threading import Thread
class myclass:
    def __init__(self):
        print("Hey there, i am constructor")
    def rn(self):
        print("okk")
    
myobj=myclass()
mythread=Thread(target=myobj.rn)

推荐阅读