Ловушка трассировки/BPT при запуске feedparser внутри объекта Thread

Я пытаюсь запустить поток для анализа списка ссылок с помощью универсального синтаксического анализатора каналов, но когда я запускаю поток, я получаю ловушку Trace/BPT.

Вот код, который я использую:

class parseRssFiles(Thread):
   def __init__ (self,rssLinks):
      Thread.__init__(self)
      self.rssLinks = rssLinks
   def run(self):
      self.rssContents = [ feedparser.parse(link) for link in rssLinks]

Есть ли другой способ сделать это?

Ссылка на отчет, созданный Mac OS X 10.6.2: http://simaom.com/trace.txt

Спасибо


person simao    schedule 10.04.2010    source источник


Ответы (1)


Без работающего тестового примера трудно сказать наверняка, но я подозреваю, что вы столкнулись с проблемой, описанной в Python tracker. проблема 7144, а именно попытка инициализировать CoreFoundation фреймворк не в основном потоке. Эта проблема исправлена ​​в Python 2.6.5, который вы можете установить с python.org или MacPorts. Непроверенный обходной путь для поставляемого Apple Python 2.6.1 в 10.6 может заключаться в выполнении чего-то безобидного в основном потоке, который вызовет инициализацию CoreFoundation перед запуском любых вторичных потоков. Что-то вроде этого в основном потоке может сделать это:

import locale
locale.getdefautlocale()
person Ned Deily    schedule 11.04.2010