2017-03-07 124 views
0

我有一個概念上的疑問。其他功能運行時是否執行回調?

如果我將一個類方法作爲回調函數(傳遞給其他線程上運行的另一個程序),並且在某些其他類方法(而不是回調方法)中遇到了問題,例如while(True)
請問callback有沒有執行

class Bicycle(object): 
    __init__(self, name): 
     self.name = name 
     self.f = 0 

    def callback(self, push_force): 
     #Go ahead 
     self.f = push_force 
    def balance(self): 
     while True: 
      # Balance the Bicycle 

def main(): 
    B1 = Bicycle("Red") 
    external(callback=B1.callback) 
    while True: 
     B1.balance() 
+0

只有當您的外部函數決定如此時,回調纔會執行...我們需要一個[mcve]。 –

+0

你的問題根本不清楚......在任何情況下,如果回調傳遞給其他線程,那麼,是的,它可以在你的'balance'方法正在運行時執行......即使它們將在CPython中交織,因爲GIL,但它們將同時執行。在其他python實現中,它們可能並行執行。 – Bakuriu

+0

@Bakuriu這回答我的問題。謝謝。 – vvy

回答

1

不是我的答案,但@ Bakuriu的,這是正確的:

如果回調被傳遞到其他線程的話,是的,它可以在你的平衡法運行執行......即使他們將由於GIL而在CPython中交織,但它們將同時執行。在其他Python實現中,它們可能會並行執行。

相關問題