2017-03-07 14 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の@私の答え、:

コールバックは、他のスレッドに渡された場合、あなたのバランスメソッドが実行されている間、はい、それは...実行することができさえかかわらず、 CPythonではGILのためにインターリーブされますが、それらは同時に実行されます。他のPythonの実装では、それらは並列に実行されるかもしれません。

関連する問題