檢查這個無文檔threading.Thread
子類,需要一點指導。覆蓋線程中的__init__線程
我的班做什麼的理解是:
"""Reload module if it's been updated since last compiled."""
代碼:
class Hotswap(threading.Thread):
def __init__(self, out, mod, gen='generate', *args, **kwargs):
self.out = out # this is an output destination
self.mod = mod
self.genname = gen # this is a generator from the "mod"
self.gen = getattr(mod, self.genname)(*args, **kwargs)
self.loaded = self.current_modtime
self.args = args
self.kwargs = kwargs
threading.Thread.__init__(self)
self.daemon = True
@property
def current_modtime(self):
return os.path.getmtime(self.mod.__file__.replace("pyc", "py"))
def run(self):
while True:
if self.current_modtime != self.loaded:
log.info("Hot-swapping module: %s", self.mod.__name__)
self.mod = reload(self.mod)
self.loaded = self.current_modtime
self.gen = getattr(self.mod, self.genname)(*self.args, **self.kwargs)
self.handle(self.gen.next())
def handle(self, elem):
self.out(elem)
這是調用的類的例子:
Hotswap(InfoHandler.add, info, 'generate', info_queue, first_frame).start()
凡InfoHandler創建一個TornadIO插座,info
是一個模塊,generate
它的方法和info_queue, first_frame
是* args。
我不明白的是out, mod, gen='generate'
如何配合threading.Thread
的group=None, target=None, name=None
。當threading.Thread.__init__(self)
運行時,組,目標和名稱是否初始化爲默認值(無)?
這些都是可選的,所以是的,它們被設置爲它們的默認值是'None'。對'threading.Thread .__ init __(self)'的調用只是調用超類'__init__'與使用'super(Hotswap,self)相同的東西.__ init __()' – Ngenator 2014-10-09 01:49:33
'super'調用將在__init__中,對?而'Hotswap .__ dict__'將返回'Hotswap'和'threading.Thread'的所有屬性。 – MikeiLL 2014-10-09 02:02:20
@Ngenator - 這個問題是否允許即使發佈?想知道我是否應該刪除。它實際上是否會邀請真正的答案? – MikeiLL 2014-10-09 02:26:30