Одновременная загрузка файла и вставка в базу данных mysql с помощью python - PullRequest
2 голосов
/ 19 января 2012

Я загружаю относительно большие файлы (по 10 МБ каждый) с помощью urllib2, затем загружаю его как файл json и вставляю данные в базу данных mysql, а затем повторяю процесс в бесконечном цикле.Загрузка занимает минуту или около того, а затем загружает все в MySQL.Есть ли способ создать поток, который выполняет загрузку, в то время как основной поток вставляет в MySQL, используя Python?

мой псевдокод:

while 1:
 download file with urllib2
 decode as json file
 extract data I want
 do some computations on data
 insert data into mysql

Большое вам спасибо!

1 Ответ

2 голосов
/ 19 января 2012

Что вы можете сделать, это использовать потоки и очереди.Поток ввода-вывода файла считывает и обрабатывает файл, а затем вставляет результат в очередь, где поток ввода-вывода базы данных затем обнаруживает результат и выполняет работу.Вместо того, чтобы кодировать пример, я приведу вам следующее: http://www.ibm.com/developerworks/aix/library/au-threadingpython/

В качестве альтернативы вы можете использовать модуль python select для управления несколькими операциями чтения файлов и обрабатывать их одну за другой по завершении:1005 *http://docs.python.org/library/select.html

...