Błąd błędu segmentacji w aplikacji wielowątkowej w Pythonie

Mam wielowątkową aplikację w Pythonie, w której tworzę wiele wątków producenta i wyodrębniają dane z DB. Dane są wyodrębniane w porcjach. Tak więc część, w której wątek tworzy instrukcję sql z wartościami granicznymi, jest przechowywana w zamku. Aby umożliwić wątkom jednoczesne wykonywanie zapytań, funkcja query () jest przechowywana poza blokadą. Następnie część pobierająca wynik jest ponownie przechowywana pod zamkiem. Poniżej znajduje się fragment kodu:

with UserAgent.lock:
    sqlGeoTarget = "call sp_ax_ari_select_user_agent_list('0'," + str(self.chunkStart) + "," + str(self.chunkSize) + ",1);"
    self.chunkStart += self.chunkSize

self.dbObj.query(sqlGeoTarget)
print "query executed. Processing data now..."+sqlGeoTarget

with UserAgent.lock:
    result = self.dbObj.fetchAll()
    self.dbObj.dbCursor.close()

Ale ten kod generuje błąd krytycznysegmentation fault (core dumped). Bo jeśli umieściłem cały kod pod kluczem, to działa dobrze. Po pobraniu danych jawnie zamykam kursor, jest on ponownie otwierany po ponownym uruchomieniu funkcji query ().

Ten kod znajduje się w klasie o nazwieUserAgent i jest to wspólny zasób dla klasy o nazwieProducer. W ten sposób obiekt bazy danych jest udostępniany. Tak więc obszar problemowy 99% musi polegać na tym, że gdy obiekt db jest współdzielony, jednoczesne klikanie zapytania i zamykanie kursora musi być kłopotliwe z zestawem wyników. Ale w jaki sposób rozwiązać ten problem i osiągnąć jednoczesne wykonanie zapytania db?

questionAnswers(1)

yourAnswerToTheQuestion