加速计算

加速计算

1、将python对象转换为numpy对象再进行就算能显著加速运算。

2、使用python concurrent.futures模块传参数,不要传numpy 否则会报错,传大数据,建议使用全局变量的形式进行。

3、在需要链接的时候优先顺序:

    直接开辟需要内存,对区域进行赋值

    使用list的extend

    使用list的append

    使用array的stack大类方法(特别耗费CPU,且耗费的是多核心,速度特别慢)。

3、多进程使用lock:

        Def functionA(A, L):

            L.acquire()

            Do something

            L.release()

        If __name == __”main”__:

            L = mu.Lock()

            FunctionA(A, L)

4、多进程事例:

import numpy

from multiprocessing import Array, Pool, cpu_count

 

 

shared_array = Array('d', 10000000)

 

 

def function_a(a):

    buf = numpy.frombuffer(shared_array.get_obj(), dtype=numpy.float32)

    buf = buf.reshape(100, -1)

    print(buf.shape)

    print(a)

 

 

if __name__ == "__main__":

    print(cpu_count())

    p = Pool() #默认大小是CPU的核心数

 

    for i in range(cpu_count()):

        p.apply_async(function_a, args=(i,))

 

    p.close()

    p.join()

    print("all succeed.")

 

5、https://zhuanlan.zhihu.com/p/143052860

6、使用cupy和谷歌最新的jax替代numpy进行计算。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TigerZ*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值