取消拾取namedtup时出错

2024-09-30 22:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

全局变量Agree是在所有函数外部定义的命名元组:

Agree = collections.namedtuple('Agree', ['kappa', 'alpha','avg_ao'], verbose=True)

命名元组从此函数返回:

^{pr2}$

在这里被称为腌制:

     future_dict[executor.submit(getagreement,task)]=frozenset(annotators)
       ... 
       detaildata[future_dict[future]]=future.result()

 cPickle.dump(detaildata,open(os.path.dirname(jsonflist[0])+'\\out.picl','w'))

取消拾取会出错:

c=cPickle.load(open(subsdir))
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  AttributeError: 'module' object has no attribute 'Agree'

文件的反汇编:

 pickletools.dis(f)
  126: c    GLOBAL     '__builtin__ tuple'
  147: p    PUT        9
  151: (    MARK
  152: F        FLOAT      0.22320438764335693
  174: F        FLOAT      0.21768346003098427
  196: F        FLOAT      0.7004133685136325
  218: t        TUPLE      (MARK at 151)
  219: t    TUPLE      no MARK exists on stack
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python27\Lib\pickletools.py", line 2009, in dis
    raise ValueError(errormsg)
ValueError: no MARK exists on stack

pickle和cPickle都给出了类似的错误。在


Tags: 函数noinlinefuturefloat命名dict
1条回答
网友
1楼 · 发布于 2024-09-30 22:25:10

我猜您在一个模块中定义了Agree,并尝试在没有定义Agree的不同模块中加载数据。尝试下面的方法,如果可以,请将定义的命名元组导入到从中加载数据的模块中。在

import collections
import cPickle
Agree = collections.namedtuple('Agree', ['kappa', 'alpha','avg_ao'], verbose=True)
c = cPickle.load(open(subsdir))

相关问题 更多 >