python并行计算for循环_在python中并行化这些嵌套for循环

一个简单的方法可以是将数组分成几个部分,并创建一些线程来贯穿这些部分。例如一段从(0,0,0)到(5,10,15),另一段从(5,10,16)到(10,20,30)。

您可以使用threading模块并执行如下操作import numpy as np

import threading as t

def fun(x, y, z):

# time-consuming computation...

# ...

return output

dim1 = 10

dim2 = 20

dim3 = 30

result = np.zeros([dim1, dim2, dim3])

#b - beginning index, e - end index

def work(ib,jb,kb,ie,je,ke):

for i in xrange(ib,ie):

for j in xrange(jb,je):

for k in xrange(kb,ke):

result[i, j, k] = fun(i, j, k)

threads = list()

threads.append(t.Thread(target=work, args(0,0,0,dim1/2,dim2/2,dim3/2))

threads.append(t.Thread(target=work, args(dim1/2,dim2/2,dim3/2 +1,dim1, dim2, dim3))

for thread in threads:

thread.start()

可以通过某种算法定义这些部分,并动态确定线程数。希望它能帮助你或者至少给你一些建议。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值