【发布时间】:2021-07-04 04:55:11
【问题描述】:
我有一个简单的 pi 近似脚本,如下所示:
import numpy as np
import matplotlib.pyplot as plt
import time
start = 10
stop = 1000000
step = 100
exactsolution = np.pi
def montecarlopi(N=1000000):
random_x = np.random.random(size = N)
random_y = np.random.random(size = N)
bod = np.array([random_x, random_y]).T
square_area = N
quarter_circle_area = np.count_nonzero(np.linalg.norm(bod, axis = 1)<=1)
pi_approx = 4*quarter_circle_area/square_area
return pi_approx
if __name__ == '__main__':
times = []
results = []
attemps = np.arange(start = start, stop = stop, step = step)
for i in attemps:
start_time = time.time()
results.append(montecarlopi(i))
times.append(time.time()-start_time)
absolute_errors = np.abs(np.array(results)-exactsolution)
我想知道根据我使用的随机尝试次数计算需要多长时间。如您所见,我使用 for 循环来获取所需的每个计算时间,但这违背了 Numpy 的目的,大大减慢了我的代码速度。实际上,我只想在整个 attemps 数组上调用 montecarlopi(),但这样我就没有计算时间了。
有没有办法对numpy的每个并行计算进行计时?
【问题讨论】:
标签: python-3.x numpy time