0

Попытка понять следующие результаты при использовании многопоточности с помощью python. Следующий код печатает A и B на консоли в случайной последовательности, чего я хотел бы достичь. Но вторая часть кода печатает только «A» на консоли и никогда не проходит мимо t1.start(). Почему это? Что мне нужно сделать во втором разделе кода, чтобы он выглядел как первый?многопоточность с использованием python

Заранее спасибо, это мой первый пост.

Это поведение я хочу:

from threading import Thread 
def runA(): 
    while True: 
     print ('A\n') 

def runB(): 
    while True: 
     print ('B\n') 

if __name__ == "__main__": 
    t1 = Thread(target = runA()) 
    t2 = Thread(target = runB()) 
    t1.setDaemon(True) 
    t2.setDaemon(True) 
    t1.start() 
    t2.start() 
    while True: 
     pass 

Я хочу, чтобы поведение, полученный из кода выше, но с использованием классов, как в приведенном ниже примере. Код ниже никогда не выполняет t2.start(). Почему это?

from threading import Thread 
class test(): 
    def runA(self): 
     while True: 
      print ('A\n') 

    def runB(self): 
     while True: 
      print ('B\n') 

if __name__ == "__main__": 
    testingNow=test() 
    t1 = Thread(target = testingNow.runA()) 
    t2 = Thread(target = testingNow.runB()) 
    t1.setDaemon(True) 
    t2.setDaemon(True) 
    t1.start() 
    t2.start() 
    while True: 
     pass 
+0

Вы уверены, что первый фрагмент кода действительно делает то, что вы хотите? Я думаю, вы представили ту же ошибку из второго фрагмента, когда вы перепечатали свой код в поле вопроса. – user2357112

ответ

0

Избавиться от () в testingNow.runA() и testingNow.runB().

+0

Вот и все! Я новичок в python, не понимал, что это изменило ситуацию! Благодаря! – LBaelish

Смежные вопросы