4798345 发表于 2017-5-31 16:53:21

给深度学习入门者的Python快速教程基础篇之二十三

多进程(multiprocessing)
深度学习中对数据高效处理常常会需要并行,这时多进程就派上了用场。考虑这样一个场景,在数据准备阶段,有很多文件需要运行一定的预处理,正好有台多核服务器,我们希望把这些文件分成32份,并行处理:

from multiprocessing import Process#, freeze_support

def process_data(filelist):
for filepath in filelist:
print('Processing {} ...'.format(filepath))
# 处理数据
...

if __name__ == '__main__':
# 如果是在Windows下,还需要加上freeze_support()
#freeze_support()

# full_list包含了要处理的全部文件列表
...

n_total = len(full_list) # 一个远大于32的数
n_processes = 32

# 每段子列表的平均长度
length = float(n_total) / float(n_processes)

# 计算下标,尽可能均匀地划分输入文件列表
indices =

# 生成每个进程要处理的子文件列表
sublists = :indices] for i in range(n_processes)]

# 生成进程
processes =

# 并行处理
for p in processes:
p.start()

for p in processes:
p.join()

晓灰灰 发表于 2017-5-31 22:56:24

谢谢楼主分享

fpga_feixiang 发表于 2024-9-9 15:30:41

6                              
页: [1]
查看完整版本: 给深度学习入门者的Python快速教程基础篇之二十三