У меня есть 10 000 файлов csv, которые я должен открыть в Pandas, и манипулировать/преобразовывать с помощью некоторых функций Pandas и сохранять новый вывод в csv. Могу ли я использовать параллельный процесс (для Windows), чтобы сделать работу быстрее? Я попытался следующие, но не повезло:Параллельная обработка большого количества заданий
import pandas pd
import multiprocessing
def proc_file(file):
df = pd.read_csv(file)
df = df.reample('1S', how='sum')
df.to_csv('C:\\newfile.csv')
if __name__ == '__main__':
files = ['C:\\file1.csv', ... 'C:\\file2.csv']
for i in files:
p = multiprocessing.Process(target=proc_file(i))
p.start()
Я не думаю, что у меня есть хорошее понимание многопроцессорной в Python.
По крайней мере, я думаю, что файлы и цикл for должны быть в главной функции: https://docs.python.org/2/library/multiprocessing .html # многопроцессорное программирование – TomAugspurger
Кстати, я думаю, что заголовок вопроса должен быть изменен, так как он действительно не очень нацелен на пересечение специфических возможностей pandas и параллельной обработки python. –
Преимущества «многопроцессорности», возможно, несколько ограничены объемом ввода-вывода, требуемым для чтения всех CSV-файлов. Чтение с диска не может быть распараллелено с типичным дисководом, поэтому, если это окажется доминирующим в среде выполнения, «многопроцессорность» не поможет. На самом деле это может повредить, если ваш жесткий диск нуждается в постоянном поиске различных частей своего диска, чтобы одновременно читать многие файлы. – dano