Trap / BPT trap при запуске feedparser внутри объекта Thread - PullRequest
0 голосов
/ 11 апреля 2010

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

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

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

Спасибо

1 Ответ

1 голос
/ 11 апреля 2010

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

import locale
locale.getdefautlocale()
...