私は複数のファイルを持っているので、マルチプロセスを使うべきだと思っています マルチプロセスを使用してフォルダ内のtxtファイルを読み取る しかし、 、 私はプールを使用しない場合は、より高速ですが見つかりました。私は 、なぜ知らないので、私は、ファイルを読むためにプールをどのような状況を使用する必要があります(巨大なファイル?)マルチプロセスを使用してファイルを読み取る方法
using Pool
time:0.5836s
not using Pool
time:0.0076s
をコードにされ、
import pandas as pd
from multiprocessing import Pool
import glob2,os,time
class PandasReadFile:
def __init__(self):
print('123')
def readFilePool(self,path):
n,t=0,time.time()
print(t)
pp = Pool(processes=1)
# here is using pool
df = pd.concat(pp.map(self.read_csv, glob2.iglob(os.path.join(path, "*.txt"))))
# not using pool
# df = pd.concat(map(pd.read_csv, glob2.iglob(os.path.join(path, "*.txt"))))
t = time.time() - t
print('%.4fs' % (t))
print(df)
@staticmethod
def read_csv(filename):
return pd.read_csv(filename)
if __name__ == '__main__':
p = PandasReadFile()
p.readFilePool('D:/')
あなたが実際に行っている作業はわずか0.0076秒です!別のプロセスで追加のPythonインタープリタを作成するオーバーヘッドはこれ以上です。実際のユースケースに時間がかかりますか?代わりにそれをテストできますか? –
テスト私はフォルダに10個のファイルを入れました 膨大な数のファイルを持っていると、単一ファイルよりも速くマルチプロセッシングができますか? 場合は、作成する必要がありますか?ありがとう。 –
I/Oバインド操作では、グローバル・インタプリタ・ロックへのアクセスは必要ありません。ここで処理が速くなります。 –