线程上的Start方法因TypeError而失败

时间:2013-12-29 14:58:41

标签: python windows multithreading python-3.x python-3.3

我收到以下错误

ERROR:

tt.start()

TypeError: 'int' object is not callable

我子线程化了线程。线程只是跟踪时间,当经过的时间与传入的任意值匹配时,它会将匹配键的值从输入字典添加到队列中。另一个线程将定期检查队列,查找工作和进程,因为它找到任何工作和进程。

以下是抛出错误的代码:

class TimerQueue(threading.Thread):

    def __init__(self, qyoo, kwargs):
        threading.Thread.__init__(self)
        self.queue = qyoo
        self.work = kwargs
        self.start = ceiling(time.time())
        self.times = kwargs.keys()


    def run(self):
        while True:
            for t in self.times:
                if ceiling(time.time()) - self.start == t:
                    logger.debug("adding {} to the queue".format(self.work[t]))
                    self.queue.put(self.work[t])
            time.sleep(1)

if __name__ == "__main__":
    input_queue = queue.Queue()
    tt = TimerQueue(input_queue, time_url_dict)
    tt.start()

调用start时为什么会收到错误?这是在运行Windows 7的Python 3.3.3中。

1 个答案:

答案 0 :(得分:5)

在以下行中,代码用tt.start对象覆盖int方法(ceiling的返回值)。

self.start = ceiling(time.time())

使用其他名称重命名self.start,例如self.start_time以避免覆盖。