Pythonコードでマルチプロセッシングを使用する方法を理解するのは難しいです。私は今、Windows OS上でいくつかのギグと数千万のレコードであるcsvファイルを処理しており、大量の処理速度のバンプに陥り始めています。私は次のコードを持っています:Pythonマルチプロセッシングを使用して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)
データは3.6ギグです。データは次のようになります。
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
このコードは小さなデータセットで動作しますが、実際の大きなデータセットでは数時間かかることがあります。私は、import concurrent.futuresとmultiprocessingのいくつかの反復を成功裏に試みました。私は失われているので、私が試したことを投稿する価値はありません。私は他の要因が速度に影響するが、新しいハードウェアを入手することは選択肢ではないことを認識している。どんな指導も高く評価されます。
1つの巨大なファイルまたは多数の巨大なファイルで操作していますか?そして、どんな種類のファイルサイズですか? –
あなたのデータはどのように見えますか?特に、 '' FinalScanActualDate'と 'MailDate'の列はどうなっていますか?彼らは定期的ですか?もしそうなら、 'pd.to_datetime'に' format'パラメータを使うだけで**たくさんのパフォーマンスを得ることができます。あるいは、繰り返したくさんの場合はメモをつけてみてください。この関数は、あなたの書式を推測する日付パーサーを使用します。これはコストのかかる操作です。 –
@BrendenPetersen申し訳ありません、それは3000万レコード以上の1つの巨大な3.6ギグファイルです。私は質問を更新しました。 –