10

Tôi có tập lệnh thực hiện cuộc gọi đến API. Để tăng tốc độ kịch bản, tôi đã cố gắng thực hiện luồng.Lỗi Python nghiêm trọng: PyImport_GetModuleDict: không có từ điển mô-đun

Kịch bản bên dưới hoạt động khi tôi đang ở IDLE, tuy nhiên khi tôi cố chạy nó bằng sys argv từ dòng lệnh, tôi nhận được hai loại lỗi được liệt kê bên dưới.

Lỗi 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. 

Lỗi 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): 

tôi không thể tìm thấy bất cứ điều gì về các lỗi này. Vì vậy, bất kỳ trợ giúp được đánh giá cao. Bên dưới là phần của tập lệnh đề cập đến luồng.

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

Từ việc googling thông báo lỗi đầu tiên mà tôi đoán là bạn đang sử dụng Windows. Tôi muốn thêm thông tin đó (có thể gắn thẻ câu hỏi "cửa sổ" cũng). Đồng thời thêm: phiên bản Python bạn đang chạy, chính xác cách bạn đang chạy tập lệnh, cho dù các tập lệnh Python khác có hoạt động bình thường hay không, cho dù sử dụng tương tác của diffbot (tức là trong trình bao Python) sẽ ném lỗi ... –

Trả lời

3

Vấn đề là khi bạn chạy này là một mình kịch bản đứng bạn có rất nhiều chủ đề daemon trong DoWork, nhưng kịch bản sẽ thoát khi chỉ đề daemon còn lại, vì vậy tất cả họ đều bị giết bởi người phiên dịch thoát. Khi bạn chạy nó tương tác trong IDLE, trình thông dịch không thoát, vì vậy bạn không gặp phải vấn đề đó.