首先,这是我的两个python文件:
sred.py:
import _thread,time
class Thread:
def __init__(self,time:int,say:str):
self.time=time
self.say=say
def create():
id = _thread.get_ident()
for i in range(5):
print("HALLO", id)
return
from sred import Thread
import time,_thread
_thread.start_new_thread(Thread.create,())
第二个: main.py
from sred import Thread
import time,_thread
_thread.start_new_thread(Thread.create,())
执行此操作时,它不打印任何内容,为什么?
更新:
import _thread
class Thread:
@classmethod
def create():
id = _thread.get_ident()
for i in range(5):
print("HALLO", id)
return
main.py:
from sred import Thread
import time,_thread
_thread.start_new_thread(Thread().create,())
现在这是对的吗,还是还有问题?
答案 0 :(得分:1)
create
方法缺少self
作为参数 - 如果您想现在调用它,它看起来也应该是@classmethod
。请注意,永远不会调用__init__
方法,因为您永远不会实例化任何Thread
个对象。您可能希望它阅读:
_thread.start_new_thread(Thread().create, ())
即,实例化一个线程,然后传递它的create
方法在新线程中执行。我不确定发生了什么,但我怀疑某些事情是错误的,而stacktrace is being suppressed则是某种错误。
此外,您需要删除for
语句后的空格 - 它很重要,它应该会给您一个关于意外缩进的语法错误。
编辑:
此版本在我的机器上运行:
import _thread
class Thread:
def create(self):
id = _thread.get_ident()
for i in range(5):
print("HALLO", id)
return
_thread.start_new_thread(Thread().create, ())