Попытка понять следующие результаты при использовании многопоточности с помощью 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
Вы уверены, что первый фрагмент кода действительно делает то, что вы хотите? Я думаю, вы представили ту же ошибку из второго фрагмента, когда вы перепечатали свой код в поле вопроса. – user2357112