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