Следующий код умирает с 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.1
и 2.5.4
. Машина работает на OS X 10.6.1 Snow Leopard. Код tvdb_api
можно найти на github.com/dbr/tvdb_api
Плохие вещи могут возникнуть при первом входе модулей в поток в OS X 10.6. См., Например, этот вопрос. В качестве обходного пути попробуйте просмотреть Tvdb и добавить свою полную цепочку импорта в основной модуль.
main()
) предотвращает сбой .. Спасибо!