Я хочу вставить миллиарды значений (обменных курсов) в файл sqlite db.Я хочу использовать многопоточность, потому что это занимает много времени, но цикл пула потоков выполняет один и тот же n-й элемент несколько раз.У меня есть инструкция print в начале моего метода, и она печатается несколько раз вместо одного.
pool = ThreadPoolExecutor(max_workers=2500)
def gen_nums(i, cur):
global x
print('row number', x, ' has started')
gen_numbers = list(mydata)
sql_data = []
for f in gen_numbers:
sql_data.append((f, i, mydata[i]))
cur.executemany('INSERT INTO numbers (rate, min, max) VALUES (?, ?, ?)', sql_data)
print('row number', x, ' has finished')
x += 1
with conn:
cur = conn.cursor()
for i in mydata:
pool.submit(gen_nums, i, cur)
pool.shutdown(wait=True)
и вывод:
row number 1 has started
row number 1 has started
row number 1 has started
row number 1 has started
row number 1 has started
row number 1 has started
row number 1 has started
...