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