J'ai du mal à comprendre comment exploiter/apprendre à utiliser le multitraitement avec mon code Python. Je suis en train de traiter des fichiers csv qui sont plusieurs concerts et des dizaines de millions d'enregistrements sur un système d'exploitation Windows et je commence à courir dans un énorme ralentissement de traitement. J'ai le code suivant:Puis-je utiliser le multitraitement Python pour que cela s'exécute plus rapidement sous Windows?
import numpy as np
import pandas as pd
import datetime as dt
df = pd.read_csv(r'C:...\2017_import.csv')
df['FinalActualDate'] = pd.to_datetime(df['FinalActualDate'])
df['StartDate'] = pd.to_datetime(df['StartDate'])
df['DaysToInHome'] = (df['FinalActualDate'] - df['StartDate']).abs()/np.timedelta64(1, 'D')
df.to_csv(r'C:...\2017_output4.csv', index=False)
Les données sont sur le fichier qui est 3.6 concerts. Les données ressemble à:
Class,OwnerCode,Vendor,Campaign,Cycle,Channel,Product,Week,FinalActualDate,State,StartDate
3,ECM,VendorA,000206,06-17,A,ProductB,Initial,2017-06-14 02:01:00,NE,06-01-17 12:00:00
3,ECM,VendorB,000106,06-17,A,ProductA,Initial,2017-06-14 00:15:00,NY,06-01-17 12:00:00
3,ECM,AID,ED-17-0002-06,06-17,B,ProductB,Secondary,2017-06-13 20:30:00,MA,06-08-17 12:00:00
3,ECM,AID,ED-17-0002-06,06-17,C,ProductA,Third,2017-06-15 02:13:00,NE,06-15-17 12:00:00
Ce code fonctionne sur les petits ensembles de données, mais il prend plusieurs heures sur le réel, grand ensemble de données. J'ai essayé plusieurs itérations de l'import concurrent.futures et du multitraitement sans succès. Je suis tellement perdu que ça ne vaut pas la peine de poster ce que j'ai essayé. Je me rends compte que d'autres facteurs ont un impact sur les vitesses, mais l'obtention d'un nouveau matériel n'est pas une option. Toute orientation serait appréciée.
Opérez-vous sur un fichier géant ou de nombreux fichiers géants? Et de quelle taille de fichier parlons-nous? –
À quoi ressemblent vos données? en particulier, à quoi ressemblent les colonnes «FinalScanActualDate» et «MailDate»? Sont-ils réguliers? Si c'est le cas, vous pourriez obtenir ** beaucoup ** de performance en utilisant simplement un paramètre 'format' pour' pd.to_datetime', ou peut-être essayer de le mémoriser, si vous vous attendez à beaucoup de répétitions. Cette fonction utilise un analyseur de date qui infère votre format, une opération coûteuse. –
@BrendenPetersen Désolé, il s'agit d'un fichier géant de 3,6 Go avec plus de 30 millions d'enregistrements. J'ai mis à jour la question. –