并行化for循环的所有迭代

2024-09-14 18:10:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要并行化for循环以减少其执行时间。 我正在使用pymysql将一个数据库复制到其他10个数据库

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分钟内并行复制所有表