Erro de falha de segmentação em um aplicativo multi-threaded em python

Eu tenho um aplicativo multi-threaded em python, onde eu crio vários encadeamentos produtores e eles extraem os dados do banco de dados. Os dados são extraídos em pedaços. Portanto, a parte em que um thread cria uma instrução sql com valores limite é mantida dentro do bloqueio. E para permitir que os threads executem consultas simultaneamente, a função query () é mantida fora do bloqueio. Em seguida, a parte de busca de resultados é novamente mantida sob o bloqueio. Abaixo está o trecho de código:

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()

Mas esse código gera erro fatalsegmentation fault (core dumped). Porque se eu colocar todo o código sob bloqueio, ele executa bem. Eu fecho explicitamente o cursor depois de buscar os dados, ele é reaberto quando a função query () é disparada novamente.

Este código está dentro de uma classe chamadaUserAgent e é um recurso compartilhado para uma classe chamadaProducer. Assim, o objeto de banco de dados é compartilhado. Assim, a área de problema 99% deve ser que, como o objeto db é compartilhado, acertando a consulta simultaneamente e fechando o cursor, deve estar atrapalhando com o conjunto de resultados. Mas, então, como resolver esse problema e obter uma execução simultânea de consultas do banco de dados?

questionAnswers(1)

yourAnswerToTheQuestion