Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numba中datetime.datetime.utcfromtimestamp(dateFrom)的变通方法?_Python_Numba - Fatal编程技术网

Python numba中datetime.datetime.utcfromtimestamp(dateFrom)的变通方法?

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

使用,并不是所有在普通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 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))的
无效使用。