0
我在文件夾中有很多文件,所以我認爲我應該使用多進程, 然後我使用多進程來讀取文件夾中的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綁定操作不需要訪問全局解釋器鎖。多進程。這裏的進程會更快。 –