【发布时间】:2017-05-05 14:34:03
【问题描述】:
为什么我在创建threading.Thread 类时必须使用threading.Thread.__init__(self) 或super(ClassName, self).__init__()?
例如:
class Threader(threading.Thread):
def __init__(self, _fp, _q):
threading.Thread.__init__(self)
self.path = _fp
self.queue = _q
def run(self):
# Do stuff
或
class Threader(threading.Thread):
def __init__(self, _fp, _q):
super(Threader, self).__init__()
self.path = _fp
self.queue = _q
def run(self):
# Do stuff
这两种方法都有效,而且做的事情大致相同。但是,如果我删除任一 .__init__() 方法,我会在堆栈中收到:from thread.start(): thread.__init__() not called。
不应该定义我自己的def __init__()“替换”.__init__() 方法吗?
我已阅读 this 其他 SO 帖子,这与我的想法一致,但得到相同的堆栈错误。
【问题讨论】:
-
为什么要优化
Thread类?为什么不直接实例化一个Thread并给它一个可调用的委托呢?my_thread=threading.Thread(target=my_callable) -
@jameslarge 语法对于我们使用 GUI 更新所做的事情来说更加简洁。
标签: python multithreading python-2.7