2017-03-07 57 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实现中,它们可能会并行执行。

相关问题