集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1970|回复: 1

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

[复制链接]
4798345 发表于 2017-5-31 16:53:21 | 显示全部楼层 |阅读模式
多进程(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 = [int(round(i*length)) for i in range(n_processes+1)]

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

# 生成进程
processes = [Process(target=process_data, args=(x,)) for x in sublists]

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

for p in processes:
p.join()
晓灰灰 发表于 2017-5-31 22:56:24 | 显示全部楼层
谢谢楼主分享
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-29 19:41 , Processed in 0.084674 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表