Python numba中datetime.datetime.utcfromtimestamp(dateFrom)的变通方法?
使用,并不是所有在普通Python脚本中可能的东西都可以使用 我想将Python numba中datetime.datetime.utcfromtimestamp(dateFrom)的变通方法?,python,numba,Python,Numba,使用,并不是所有在普通Python脚本中可能的东西都可以使用 我想将int转换为datetime对象。在通常的Python中,这可以通过以下方式完成: dateFrom = 0 a = datetime.datetime.utcfromtimestamp(dateFrom) print (a) > 1970-01-01 00:00:00 使用numba会导致错误: import numba as nb import datetime @nb.jit(nopython=True) def
int
转换为datetime
对象。在通常的Python中,这可以通过以下方式完成:
dateFrom = 0
a = datetime.datetime.utcfromtimestamp(dateFrom)
print (a)
> 1970-01-01 00:00:00
使用numba会导致错误:
import numba as nb
import datetime
@nb.jit(nopython=True)
def abc():
dateFrom = 0
a = datetime.datetime.utcfromtimestamp(dateFrom)
return a
print(abc())
错误:
Traceback (most recent call last):
File "/home/user/venv/numba/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-12-0ded7f14df2a>", line 1, in <module>
print(abc())
File "/home/user/venv/numba/lib/python3.6/site-packages/numba/dispatcher.py", line 401, in _compile_for_args
error_rewrite(e, 'typing')
File "/home/user/venv/numba/lib/python3.6/site-packages/numba/dispatcher.py", line 344, in error_rewrite
reraise(type(e), e, None)
File "/home/user/venv/numba/lib/python3.6/site-packages/numba/six.py", line 668, in reraise
raise value.with_traceback(tb)
numba.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Unknown attribute 'datetime' of type Module(<module 'datetime' from '/home/user/anaconda3/lib/python3.6/datetime.py'>)
File "<ipython-input-11-a989c5d8d15a>", line 8:
def abc():
<source elided>
dateFrom = 0
a = datetime.datetime.utcfromtimestamp(dateFrom)
^
....
To see Python/NumPy features supported by the latest release of Numba visit:
http://numba.pydata.org/numba-doc/latest/reference/pysupported.html
and
http://numba.pydata.org/numba-doc/latest/reference/numpysupported.html
回溯(最近一次呼叫最后一次):
文件“/home/user/venv/numba/lib/python3.6/site packages/IPython/core/interactiveshell.py”,第3326行,运行代码
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第1行,在
打印(abc())
文件“/home/user/venv/numba/lib/python3.6/site packages/numba/dispatcher.py”,第401行,为参数编译
重写错误(例如,“键入”)
文件“/home/user/venv/numba/lib/python3.6/site-packages/numba/dispatcher.py”,第344行,错误\u重写
重放(类型(e),e,无)
文件“/home/user/venv/numba/lib/python3.6/site-packages/numba/six.py”,第668行,重新登录
通过_回溯(tb)提升值
numba.errors.TypingError:在nopython模式管道中失败(步骤:nopython前端)
类型为Module()的未知属性“datetime”
文件“”,第8行:
def abc():
dateFrom=0
a=datetime.datetime.utcfromtimestamp(dateFrom)
^
....
要查看最新版本的Numba支持的Python/NumPy功能,请访问:
http://numba.pydata.org/numba-doc/latest/reference/pysupported.html
和
http://numba.pydata.org/numba-doc/latest/reference/numpysupported.html
使用numba时,如何获得正确打印的datetime相似对象 来自
numba
的专家给了我解决方案:
可以使用带有objmode()的回调python解释器。详情:
例如:
from numba import njit, objmode
from numba.typed import List
import datetime
@njit
def foo(lst):
for i in lst:
if i % 1000 == 0:
with objmode():
print(datetime.datetime.utcfromtimestamp(i))
# do compute here
l = List()
for i in range(10000):
l.append(i)
foo(l)
datetime
是一个python模块,在numba
中没有重复。关闭nopython
命令有帮助吗?关闭它会有帮助,但这样我就失去了numba在这个功能上的巨大速度优势。因此,我希望既有速度又有实时值的舒适性,但实时对象是python对象。numba是否处理datetime64
dtypes?使用a=np.array([dateFrom]).astype(np.int).astype('datetime64[s]'))
不幸地导致带参数(Function())的BoundFunction(array.astype for array(int64,1d,C))的无效使用。