Распараллелить все итерации цикла for - PullRequest
0 голосов
/ 21 июня 2020

Мне нужно распараллелить a для l oop, чтобы сократить время выполнения. Я реплицирую базу данных для 10 других, используя py mysql.

from mysql.connector import MySQLConnection, Error
import pymysql
import csv
import config
import multiprocessing


def query_with_fetchall(i):
    conn = MySQLConnection(host = config.host,
                                    user = config.user,
                                    password = config.passwd,
                                    db = config.db_name)
    cursor = conn.cursor()
    
    sql = '''USE ultimate;
    CREATE TABLE IF NOT EXISTS orders_user{0} (id VARCHAR(10), amazon_order_id VARCHAR(100), merchant_order_id VARCHAR(100), purchase$
    sqla = ''LOAD DATA LOCAL INFILE '/home/ec2-user/order.csv' INTO TABLE orders_user{0} FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' '''
    for result in cursor.execute(sql, multi=True):
            pass
    cursor.execute(sqla)
    conn.commit()
    conn.commit()
    conn.close()
    print("s")

jobs = []
for i in range(2):
    try:
        p1 = Process(target = query_with_fetchall, args =(i,))
        print("done")
        jobs.append(p1)
    except Exception:
        import traceback
        print(traceback.format_exc())
        pass
for j in jobs:
    j.start()
for j in jobs:
    j.join

Время, затрачиваемое на перемещение 10 таблиц, составляет примерно 10 минут, то есть по 1 минуте каждая, я хочу реплицировать все таблицы параллельно за 1 минуту .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...