在函数上运行时使用多处理

时间:2019-01-24 08:36:40

标签: python multithreading multiprocessing

我正在尝试从csv中删除一些文件,

这是它的样子

print(len(file))
for index, item in enumerate(file['filenames']):
   try:
       Image.open(os.path.join(image_file_path,item.split('/')[-1]))
   except Exception as e:
       file.drop(index, inplace = True)
       print(index)
       pass

但这真的真的很慢。

所以我尝试了这种方法。

file = pd.read_csv('/home/data/dory_train/v1/ryan_01.csv', names = ['filepath', 'text'])

def multi_csv(csv_file):
   for index, value in enumerate(file['filepath']):  
      try:  
         Image.open(value)
      except Exception as e:
         file.drop(file.index[index], inplace = True)
         file.to_csv('/home/ryan/coco/loopandtest.csv', header = False, index  = False)
      print(index)

def mp_handler():
    p = multiprocessing.Pool(12)
    p.map(multi_csv, file)

if __name__ == '__main__':
    mp_handler()

但是,即使这似乎并没有太大帮助,我首先担心的是,我是否正确实施了这种多处理?我可以做些什么来加快速度吗?

信息:我的CPU有12个内核,csv有2900000行。

谢谢。

0 个答案:

没有答案