我的以下代码适用于 python 2.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 开始的版本:在上面的代码中,run 被调用但是当它调用时super(Worker, self).run()
,我看到以下错误
TypeError: threadTargMethod() argument after ** must be a dictionary
我应该super
在 python 2.4 中以不同的方式调用吗?
解决方案 我必须通过以下方式启动线程:
Worker(target=threadTargMethod, name="thread1", args=(), kwargs={}).start()
在 v2.7 中,我开始以下方式并且它有效
Worker(target=threadTargMethod, name="thread1").start()