El hilo parece estar bloqueando el proceso.

class MyClass(): def __init__(self): ... def start(self): colorThread = threading.Thread(target = self.colorIndicator()) colorThread.start() while True: print ('something') ... ... 

También tengo una statement print dentro del colorIndicator() . Esa statement se está imprimiendo. Pero la statement de impresión dentro del método while loop of start() no se muestra en la pantalla.

El colorIndicator() también tiene un bucle infinito. Obtiene algunos datos de internet y actualiza un contador. Este contador se inicializa dentro de __init__ como variable self y estoy usando esa variable dentro de otros métodos.

No entiendo por qué print dentro mientras no se está ejecutando.

Función colorIndicator:

 def colorIndicator(self): print ('something else') ... while (True): ... print ('here') time.sleep(25) 

La salida que obtengo es la siguiente:

 something else here here 

Lo detuve después de eso. Por lo tanto, el colorIndicator claramente se está ejecutando completamente. Estoy llamando al script con import en un intérprete de python (en un terminal). Luego hago una instancia de MyClass y llamo a la función de start .

En realidad, no está ejecutando colorIndicator en un subproceso, porque lo llamó en el subproceso principal, en lugar de pasar el propio método (fuera de lugar) como el target subproceso. Cambio:

  colorThread = threading.Thread(target=self.colorIndicator()) # ^^ Agh! Call parens! 

a:

  # Remove parens so you pass the method, without calling it colorThread = threading.Thread(target=self.colorIndicator) # ^ Note: No call parens 

Básicamente, su problema es que antes de construir el Thread , intenta ejecutar colorIndicator hasta su finalización para que pueda usar su valor de retorno como target , lo cual es incorrecto de varias maneras (el método nunca regresa, e incluso si lo hizo, no devolvería una apta apta para su uso como target ).