找回密码
 注册
关于网站域名变更的通知
查看: 268|回复: 1
打印 上一主题 下一主题

给深度学习入门者的Python快速教程基础篇之多进程(multiprocessing)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-14 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 House 于 2018-11-14 14:32 编辑
. U! P6 [5 D, w6 x  v5 j* d1 H& C) X; n8 W( r
多进程(multiprocessing)
5 y2 ]. P2 o( f- T2 a深度学习中对数据高效处理常常会需要并行,这时多进程就派上了用场。考虑这样一个场景,在数据准备阶段,有很多文件需要运行一定的预处理,正好有台多核服务器,我们希望把这些文件分成32份,并行处理:
/ z( V: t  H1 l/ d6 [$ f- U
& f1 U3 x5 ~7 Q* ~" @3 d! [" vfrom multiprocessing import Process#, freeze_support  M2 J) y7 s; u- E. @; Q) P" E

+ @& I2 }, @, O% w" Q  S) Ydef process_data(filelist):
+ W- n5 b' K, E6 G  yfor filepath in filelist:
, r7 W! G  s: @# l8 ^$ W, m% Wprint('Processing {} ...'.format(filepath))
# d" X# u9 B( }/ d% Q# a# 处理数据
0 W3 [* Y9 H5 a6 r  ~7 ]6 E...' d# C& |5 n; W$ g

: @6 Z# {) @# t2 Pif __name__ == '__main__':! F/ x- v- R* l* R& B! T1 P5 w
# 如果是在Windows下,还需要加上freeze_support()
* v: _0 w& V1 l8 K#freeze_support()& O  o9 s; x) k% U# T. E
+ }; S0 x) p5 m, ~
# full_list包含了要处理的全部文件列表4 A+ r, p! r+ [4 o) W" J$ K
...) M/ L9 ^' y" T; F5 b( g
  p- k0 ^  h6 T& q5 o% Y& z
n_total = len(full_list) # 一个远大于32的数
! q+ M5 @0 I( {& q9 Bn_processes = 322 ^" n9 p# r  R4 Q
% |- Q+ ~5 ]' b) I' t
# 每段子列表的平均长度& e: Z4 {5 ^- Y  |: H: i  I
length = float(n_total) / float(n_processes)
7 @1 C3 e/ `- Z1 z. g( O) P! {: ^1 j% g# |6 k3 x
# 计算下标,尽可能均匀地划分输入文件列表
, G0 q: Y" `* e+ rindices = [int(round(i*length)) for i in range(n_processes+1)]5 U: N- e- i5 Q$ s3 `

, w, Q5 t0 H( m3 i1 F. Y& L1 y) U# 生成每个进程要处理的子文件列表! z5 }, L0 _. V% U3 {
sublists = [full_list[indices:indices[i+1]] for i in range(n_processes)]: m' @' ^  G. e5 O

  Y6 P+ G' ?* n1 g) H, p# 生成进程6 g4 U/ y  m  a  }& b, o
processes = [Process(target=process_data, args=(x,)) for x in sublists]5 D6 Q# q6 k  x) z8 I+ f

% Y+ z6 P% t" A8 t3 {# 并行处理
) I# n7 i+ M" I4 qfor p in processes:; d8 r9 K7 M/ E: P4 ?
p.start()% M: p: P! ]1 k, l
' M" q  l0 K: r9 M" r5 ]( o
for p in processes:
4 y5 m5 k2 E* \) bp.join()
$ A; b& a  J: V" ^& p, P" n

4 G) P1 U5 N( [! m5 y5 Z( |) [. t. ?5 S9 V, w

9 w+ y/ }; r6 x6 ^( Q. ?; o
4 _$ z) Q& n& h
, b$ e. k  l$ b( M/ y+ \4 B
! D3 o3 X& H! Q8 I) L

' ]; x- K, ^( `1 g- }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-6 14:36 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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