代码之家  ›  专栏  ›  技术社区  ›  Mauli

psyco抱怨不支持的操作码54,它是什么?

  •  0
  • Mauli  · 技术社区  · 15 年前

    psyco日志输出如下所示:

    21:08:47.56  Logging started, 10/29/09                  %%%%%%%%%%%%%%%%%%%%
    21:08:47.56  unsupported opcode 54 at create_l0:124                      % %
    21:08:47.56  unsupported opcode 54 at create_lx:228                      % %
    

    有问题的台词

    class File:
        def __init__(self, path, header):
            self.path = path
            self.header = header
            self.file = path + '/' + header.to_filename()
            self.pfile = None
    
        def add_entry(self, entry):                        # line 124
            self.pfile.write(entry.to_binary())
    
        def open(self):
            self.pfile = open(self.file, 'wb')
            self.pfile.write(self.header.to_binary())
    
        def close(self):
            self.pfile.close()
    
        def write(self, data):
            self.pfile.write(data)
    

    下一个:

    nat_file = File(target + '/' + name, nat_header)
    nat_file.open()
    # add first value
    nat_file.add_entry(DataBlock(t, q, 0.0, 1, v))
    # add all others
    while True:
        try:
            t, v, q = f.next()
        except StopIteration:
            break
        nat_file.add_entry(DataBlock(t, q, 0.0, 1, v))
    nat_file.close()                                     # line 228
    

    我有点不知所措。有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Jason Baker    15 年前

    使用数字查找操作码的名称实际上非常简单(下面在Ubuntu上使用python 2.6.2,您可能会得到不同的结果):

    >>> import dis
    >>> dis.opname[54]
    'STORE_MAP'
    

    当然,弄清楚这究竟意味着什么完全是另一个问题。-)

        2
  •  0
  •   Sjoerd    15 年前

    编译时使用的psyco版本是否与运行脚本时使用的版本不同?