Почему мои многопоточные запросы MySQLdb в Python медленнее, чем те же непоточные запросы?

Я создаю многопоточный класс для выполнения запросов MySQL с использованием Python и MySQLdb. Я не Я понимаю, почему выполнение этих запросов с потоками медленнее, чем их выполнение без потоков. Вот мой код, чтобы показать, что я делаю.

Во-первых, вот непоточная функция.

def testQueryDo(query_list):

    db = MySQLdb.connect('localhost', 'user', 'pass', 'db_name')
    cursor = db.cursor()

    q_list = query_list
    for each in q_list:
        cursor.execute(each)
        results = cursor.fetchall()

    db.close()

Вот мой многопоточный класс:

class queryThread(threading.Thread):

    def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue

        self.db = MySQLdb.connect('localhost', 'user', 'pass', 'db_name')
        self.cursor = self.db.cursor()

    def run(self):
        cur_query = self.queue.get()
        self.cursor.execute(cur_query)
        results = self.cursor.fetchall()
        self.db.close()
        self.queue.task_done()

А вот обработчик:

def queryHandler(query_list):
    queue = Queue.Queue()

    for query in query_list:
        queue.put(query)

    total_queries = len(query_list)
    for query in range(total_queries):
        t = queryThread(queue)
        t.setDaemon(True)
        t.start()

    queue.join()

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

Я понимаю, что мне не хватает чего-то совершенно очевидного, однако любая поддержка был бы очень признателен!

6
задан mudda 12 March 2011 в 22:53
поделиться