强制首先执行回调

时间:2013-06-04 09:55:42

标签: python python-2.7 callback

我在使用安全多方计算的程序中有以下codesnippet:

c = self.runtime.open(b)  # open result
c.addCallback(self.determine) 

j = self.compute(i)
return j

现在函数determine将布尔值设置为false或true,具体取决于c的值。然后,函数compute使用此布尔值。

我认为在程序的其余部分之前总是首先执行回调。但是,我从compute收到一个错误,即布尔值未定义。

在执行 compute之前,如何强制执行回调

因为我在安全的多方计算框架内工作,所以我必须使用回调,因为c的值是共享密钥。但是,我认为这个问题也没有秘密分享。语言是Python。

determinecompute的代码如下:

def determine(c):
    global computeB
    computeB = False
    if c == 1:
        computeB = True
    else:
        computeB = False
    return c

def compute(i):
    if computeB:
         do this
    else:
         do this
    return result

2 个答案:

答案 0 :(得分:0)

回调在执行时执行。 “让”它更早执行是没有意义的。

我猜你正在处理扭曲所以继承人教程http://krondo.com/?page_id=1327但是它对于理解异常编程一般很有帮助,你显然需要它。

答案 1 :(得分:0)

我不是异步的专业人士,但我认为你想要放弃你的第一个功能,并告诉你的例程在它继续之前等待。

yield self.runtime.open(b)  # open result

j = self.compute(i)
return j