向后移植到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