删去代码中所有 self,你的这个死循环线程就能运行了。
import threading
#子线程方法
def printLog():
while True:
print("12345")
#主线程调用,直接导致主线程阻塞~
t = threading.Thread(target=printLog())
t.start()
python 的 self 类似于c++和java中的this。在 python 的代码里,这个特别的变量 self 指对象本身。self是类方法一个额外的第一个参数名称,但调用这个方法的时候你不为这个参数赋值,Python会提供这个值。
你的方法代码既然写上第一参数 self, 那你的意图就是要让这个方法,归属于某一具体的类。因此,若将你的这个方法 printLog()定义在一个类中,比如 class X 之中,那麽 就可以写上此方法的第一参数 self,self 就“顺理成章” 了: self 就是指 X 类的对象/实体。当下面再调用它的时候,就要在此方法之前加上"句柄/类名",并写明第一参数是 self。这样也就可以运行了。
import threading
#子线程方法
class X:
def printLog(self):
while True:
print("12345")
#主线程调用,直接导致主线程阻
self=X
t = threading.Thread(target=X.printLog(self))
t.start()