向後移植到V2.4我有下面的代碼工作正常使用Python 2.7+蟒蛇:線程問題,而從V2.7
class Worker(threading.Thread):
def __init__(self, group=None, target=None, name=None,
args=(), kwargs=None, verbose=None, onCompleteCb=None):
self.__onCompleteCb = onCompleteCb
self.__name = name
super(Worker, self).__init__(group, target, name, args, kwargs, verbose)
def getName(self):
return self.__name
def run(self):
try:
super(Worker, self).run()
if self.__onCompleteCb is not None: self.__onCompleteCb(self.__name)
except Exception, e:
if self.__onCompleteCb is not None: self.__onCompleteCb(self.__name, failed=True, exception=e)
但是我發現最近我的代碼應該支持從2.4版本開始:在上面的代碼,運行被調用,但是當它調用super(Worker, self).run()
,我看到下面的錯誤
TypeError: threadTargMethod() argument after ** must be a dictionary
我應該在Python 2.4不同調用super
?
解決方案 我要開始以下列方式螺紋:
Worker(target=threadTargMethod, name="thread1", args=(), kwargs={}).start()
在V2.7我開始通過以下方式和它的作品
Worker(target=threadTargMethod, name="thread1").start()
你確定它沒有錯誤退出嗎?如果'threading.Thread'不是2.4 – entropy 2013-02-25 22:04:08
中的新式類,那麼我肯定可以看到它出錯了。對不起,您是對的,出現錯誤。錯誤logger.exception(e)在except塊中被刪除。用錯誤更新問題。 – Prasanna 2013-02-25 22:09:12
看起來像一個非常奇怪的錯誤。 'threadTargMethod()'不會顯示在谷歌的任何地方。 – entropy 2013-02-25 22:20:53