作者Fungshui ()
看板Python
标题Re: [问题] for 回圈 平行化
时间Wed Jun 8 01:07:02 2016
※ 引述《Dirac (Dirac)》之铭言:
: 小弟最近需要加快回圈速度
: 第一个想到的就是平行化
: 这里是小弟的程式码 (创立矩阵)
: j=0
: for w in np.arange(Omega_start,Omega_end,Omega_grid):
: k=0
: for t in np.arange(Timearray[int(len(Timearray)/20*TI)],Timearray[int(len(Timearray)/20*TF-1)],h*Time_grid):
: a[k][j] = wave(w,t)
: k+=1
: j+=1
: #####
: a[k][j] 是一个矩阵 , wave是一个定义函数 ,
: 主要想要让for w 这边用平行化速度加快
: 请问一下有什麽tutorial可以看吗?
: multiprocessing 的使用文件实在是有点复杂...
: 感谢各位版友
可能没写很漂亮,但还是可以给你参考一下
import multiprocessing as mp
import numpy as np
from itertools import product, izip
def f(a, n, x, y):
a[n] = x * y
if __name__ == '__main__':
l = range(1, 5)
l2 = range(10, 20)
it = list(product(l, l2))
arr_len = len(l) * len(l2)
arr = mp.Array('d', np.zeros(arr_len))
tasks = []
for n, (x, y) in izip(range(arr_len), it):
p = mp.Process(target=f, args=(arr, n, x, y))
tasks.append(p)
p.start()
p.join()
a = np.array(arr).reshape(len(l), len(l2)).T
print(a)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 119.14.174.160
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1465319225.A.0BB.html
※ 编辑: Fungshui (119.14.174.160), 06/08/2016 01:10:21
写错了改一下...
※ 编辑: Fungshui (211.75.118.108), 06/08/2016 08:58:15
1F:推 brian41005: 比较建议用多执行绪 06/16 23:31