我在使用安全多方计算的程序中有以下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。
determine
和compute
的代码如下:
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
答案 0 :(得分:0)
回调在执行时执行。 “让”它更早执行是没有意义的。
我猜你正在处理扭曲所以继承人教程http://krondo.com/?page_id=1327但是它对于理解异常编程一般很有帮助,你显然需要它。
答案 1 :(得分:0)
我不是异步的专业人士,但我认为你想要放弃你的第一个功能,并告诉你的例程在它继续之前等待。
yield self.runtime.open(b) # open result
j = self.compute(i)
return j