首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numba和KeyboardInterrupt异常冲突

Numba和KeyboardInterrupt异常冲突
EN

Stack Overflow用户
提问于 2015-10-13 16:37:54
回答 1查看 482关注 0票数 1

我在使用Continuum模块编译KeyboardInterrupt异常时遇到了问题。这是我的数据采集代码:

代码语言:javascript
复制
@jit
def lockinmeasurement(x):
    Measurement=np.empty((0,5))
    XMeas=np.empty((0,2))
    event_handler = LoggingEventHandler()
    observer = Observer()
    observer.schedule(event_handler, path_to_watch, recursive=True)
    observer.start()
    try:
       while x:
           SQData=pd.read_csv(path_to_watch,sep=',',skiprows=14)
           Temp=SQData['Temperature (K)']
           Field=SQData['Field (Oe)']
           XMeas=np.append(XMeas,[[time.clock(),lockin.x]],axis=0)
           Measurement=np.append(Measurement,[[a,b,c,d,e]])
           p1.plot(XMeas,clear=True,label='Lockin X',pen='y')
           pg.QtGui.QApplication.processEvents()    
           rd=pd.DataFrame(Measurement)
           rd.to_csv('fileout.csv',sep='\t',index=False)
           time.sleep(0.2)
    except KeyboardInterrupt:
       print('interrupted!')

lockinmeasurement(True)

在没有'@jit',的情况下,代码编译得非常好,但是当我试图使用numba时,它会返回一个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\numba\bytecode.py", line 231, in next
    info = BYTECODE_TABLE[opcode]
KeyError: 121

During handling of the above exception, another exception occurred:

lockinmeasurement(True)

  File "C:\Anaconda3\lib\site-packages\numba\dispatcher.py", line 165, in _compile_for_args
    return self.compile(sig)

  File "C:\Anaconda3\lib\site-packages\numba\dispatcher.py", line 303, in compile
    flags=flags, locals=self.locals)

  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 595, in compile_extra
    return pipeline.compile_extra(func)

  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 316, in compile_extra
    raise e

  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 311, in compile_extra

    bc = self.extract_bytecode(func)
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 303, in extract_bytecode

    bc = bytecode.ByteCode(func=self.func)

  File "C:\Anaconda3\lib\site-packages\numba\bytecode.py", line 333, in __init__
    table = utils.SortedMap(ByteCodeIter(code))

  File "C:\Anaconda3\lib\site-packages\numba\utils.py", line 109, in __init__
    for i, (k, v) in enumerate(sorted(seq)):

  File "C:\Anaconda3\lib\site-packages\numba\bytecode.py", line 235, in next
    raise NotImplementedError(ts % tv)

NotImplementedError: offset=80 opcode=0x79 opname=SETUP_EXCEPT

有什么办法可以克服这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-19 20:05:22

由于特拉维斯的创新团队的努力,numba是一个伟大而强大的科学计算工具。然而,人们应该注意在可行的情况下使用它,并在jit-compilation可以为我们艰难而快速的生活带来一些水果的地方使用它。

Numba文档明确指出了这一点,并说:

2.4.1.1.构造 Numba力求尽可能多地支持语言,但是一些语言特性是Numba编译函数中不可用的:。

  • 功能定义
  • 类定义
  • 异常处理(try .. except, try .. finally)
  • 上下文管理( with语句)
  • 理解( listdictset或生成器理解)
  • 生成器委托(yield )

raise语句支持多种形式的raise (重新引发当前异常) raise SomeException assert:在nopython模式中,构造函数参数必须是编译时常量,类似地,无论是否存在错误消息,都支持nopython语句。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33108075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档