我有使用安全多方計算程序中的以下codesnippet:強制回調首先被執行
c = self.runtime.open(b) # open result
c.addCallback(self.determine)
j = self.compute(i)
return j
現在determine
設置一個布爾要麼或真或假,這取決於價值的功能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
您需要從確定調用計算,這就是回調的工作方式。 – njzk2
什麼是執行你的回調呢?顯然,當你調用'compute()'的時候,你的回調還沒有執行。沒有關於你在這裏使用的框架的更多細節,它是*不可能*幫助你進一步處理。 –
表達式'c == 1'返回一個布爾值;只需使用'computeB = c == 1'而不是'if' - 'else'語句。 –