我收到 get_ipython().magic Error for using time function

I am getting get_ipython().magic Error for using time function

我正在尝试使用 numpy 和 Numba 为一个简单的矩阵乘法程序计时。 这是我的代码

我收到的错误是 get_ipython().magic('time _ = A.dot(B)') SyntaxError: invalid syntax

import time
import numpy as np
from numba import jit, njit, vectorized

A = np.random.randint(0, 15, size=(1000,1000))
B = np.random.randint(0, 15, size=(1000,1000))

%time A.dot(B)

@jit(nopython=True)
%time _ = A.dot(B) 

如有任何帮助,我们将不胜感激!

我认为您存在一些误解,解决这些问题将使您的代码也能正常工作。

  1. %time 是 IPython 的 line magic
    这不需要导入 time python 包。
  2. 装饰器(如您的 @jit(nopython=True) 表达式)用于包装函数或 class 定义。将它们放在常规代码行的前面会产生同样的错误。
    要使此代码在您的情况下可行,您可以做的是将您尝试处理的代码行包装在一个函数中。

你的代码的工作版本应该是这样的:

import numpy as np
from numba import jit

A = np.random.randint(0, 15, size=(1000,1000))
B = np.random.randint(0, 15, size=(1000,1000))

%time A.dot(B)

@jit(nopython=True)
def wrapped_dot(A, B):
  return A.dot(B)

%time _ = wrapped_dot(A, B)

虽然我还要指出,由于您已经在使用 numpy 数组,numba 可能不会实现明显的加速,因为 numpy 已经过优化。