使用Python线程模块的跟踪/ BPT陷阱

时间:2009-10-08 22:21:16

标签: python multithreading

以下代码随Trace/BPT trap而死:

from tvdb_api import Tvdb
from threading import Thread

class GrabStuff(Thread):
    def run(self):
        t = Tvdb()

def main():
    threads = [GrabStuff() for x in range(1)]
    [x.start() for x in threads]
    [x.join() for x in threads]

if __name__ == '__main__':
    main()

错误发生在Tvdb(),但我不明白为什么。

我使用python -m pdb thescript.py运行代码并逐步执行代码,然后在以下行之后死掉:

> .../threading.py(468)start()
-> _active_limbo_lock.acquire()
(Pdb) 
> .../threading.py(469)start()
-> _limbo[self] = self
(Pdb) 
> .../threading.py(470)start()
-> _active_limbo_lock.release()
(Pdb) 
> .../threading.py(471)start()
-> _start_new_thread(self.__bootstrap, ())
(Pdb) 
> .../threading.py(472)start()
-> self.__started.wait()
(Pdb) Trace/BPT trap

(我用...

替换了threading.py的完整路径

2.6.12.5.4出现同样的问题。该机器在OS X 10.6.1 Snow Leopard上运行。可以在github.com/dbr/tvdb_api

上找到tvdb_api代码

1 个答案:

答案 0 :(得分:3)

在OS X 10.6上的线程中首次导入模块时可能会发生错误。例如,请参阅this issue。作为一种解决方法,尝试查看Tvdb并将其完整的导入链添加到主模块。