2017-03-07 1 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, 그러나 그들은 동시에 처형 될 것입니다. 다른 파이썬 구현에서는 병렬로 실행될 수 있습니다. – Bakuriu

+0

@Bakuriu 내 질문에 대한 답변입니다. 감사. – vvy

답변

1

하지 정확하지만 Bakuriu의 @ 내 대답 :

콜백이 다음 다른 스레드에 전달되는 경우 균형 방법이 실행되는 동안, 네, 그것은 ... 실행할 수 있습니다 심지어 그들이 비록 CPython에서 GIL로 인해 인터리브되지만 동시에 실행됩니다. 다른 파이썬 구현에서는 병렬로 실행될 수 있습니다.

관련 문제