10

У меня есть сценарий, который вызывает вызовы API. Чтобы ускорить сценарий, я попытался выполнить потоки.Fatal Python error: PyImport_GetModuleDict: нет словаря модуля

Приведенный ниже сценарий работает, когда я нахожусь в IDLE, однако, когда я пытаюсь запустить его с помощью sys argv из командной строки, я получил два типа ошибок, перечисленных ниже.

Ошибка 1

Fatal Python error: PyImport_GetModuleDict: no module dictionary! 

This application has requests the Runtime to terminate it in an unusual way. Please   contact the application's support team for more information. 

Ошибка 2

Exception in thread Thread-1 (most likely raised during iterpreter shutdown): 
Exception in thread Thread-2 (most likely raised during iterpreter shutdown): 
Exception in thread Thread-3 (most likely raised during iterpreter shutdown): 
Exception in thread Thread-5 (most likely raised during iterpreter shutdown): 

Я не могу найти что-нибудь об этих ошибках. Таким образом, любая помощь приветствуется. Ниже приведена часть скрипта, который занимается потоковой обработкой.

import threading 
import diffbot 

urls = [[example.com],[example2.com]] 
data = [] 

def getData(url): 
     x = diffbot.classify(url) 
    data.append(x) 


def doWork(urls): 
    for element in urls: 
     for url in element: 
      t = threading.Thread(target=getData, args=(url,)) 
      t.daemon = True 
      t.start() 

doWork(urls) 
+0

Из-за ошибки в первом сообщении об ошибке, я предполагаю, что вы в Windows. Я бы добавил эту информацию (возможно, отметьте также вопрос «окна»). Также добавьте: какую версию Python вы используете, точно как вы запускаете скрипт, независимо от того, ведут ли другие скрипты Python в обычном режиме, независимо от того, использует ли интерактивное использование diffbot (то есть в оболочке Python) ошибку ... –

ответ

3

Проблема заключается в том, что при запуске этого в качестве отдельного сценария у вас есть много демонов потоков в DoWork, но сценарий будет выходить, когда только демон потоки остались, так что все они гибнут от переводчика выход. Когда вы запускаете его интерактивно в IDLE, интерпретатор не выходит, поэтому вы не сталкиваетесь с этой проблемой.

Смежные вопросы