我收到 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)
如有任何帮助,我们将不胜感激!
我认为您存在一些误解,解决这些问题将使您的代码也能正常工作。
%time
是 IPython 的 line magic。
这不需要导入 time
python 包。
- 装饰器(如您的
@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 已经过优化。
我正在尝试使用 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)
如有任何帮助,我们将不胜感激!
我认为您存在一些误解,解决这些问题将使您的代码也能正常工作。
%time
是 IPython 的 line magic。
这不需要导入time
python 包。- 装饰器(如您的
@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 已经过优化。