Я выполняю несколько вычислительно дорогостоящих операций над 75 000 файлов. чтобы ускорить я распараллелил процесс
import multiprocessing; num_cores = multiprocessing.cpu_count()-6
def ParseOneDocument(row):
## loads data
## returns a csv with important data for each iteration ("row")
with open(path+'eachletter_'+str(row)+".csv", 'w+', newline='') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
# replace the above with an SQL access
results = Parallel(n_jobs=num_cores)(delayed(ParseOneDocument)(row) for row in NumberOfDocuments)
На более позднем этапе я собираю все созданные csv
и добавляю их. Это работает. Но это громоздко, если кто-то хочет перезапустить код и удалить все csv
.
В идеале был бы способ сохранить результаты в базе данных SQL (?), Которая может оцениваться одновременно из нескольких потоков параллельного цикла.