Re: [问题] for 循环 平行化

楼主: Fungshui   2016-06-08 01:07:02
※ 引述《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)
作者: brian41005   2016-06-16 23:31:00
比较建议用多执行绪

Links booklink

Contact Us: admin [ a t ] ucptt.com