Trace / BPT trap с модулем потоков Python

1

Следующий код умирает с 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

  • 0
    github.com/dbr/tvdb_api - 404. Мне пришлось изменить его на http.
  • 1
    Тот факт, что в этом модуле Python есть Rakefile (Ruby), заставляет меня серьезно усомниться в его разумности, но в любом случае я не получаю никаких ошибок при запуске приведенного выше кода в Linux. Попробуйте запустить его в (реальном) отладчике, чтобы увидеть, получаете ли вы обратную трассировку из «Trap / BPT trap»; Вы также можете попробовать закомментировать блоки Tvdb .__ init__, чтобы посмотреть, сможете ли вы сузить причину.
Показать ещё 1 комментарий
Теги:
multithreading

1 ответ

3
Лучший ответ

Плохие вещи могут возникнуть при первом входе модулей в поток в OS X 10.6. См., Например, этот вопрос. В качестве обходного пути попробуйте просмотреть Tvdb и добавить свою полную цепочку импорта в основной модуль.

  • 0
    Странно .. Инициализация Tvdb () один раз вне потока (только при импорте или в main() ) предотвращает сбой .. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню