加速计算
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进行计算。