簡體   English   中英

Python:同時執行多個無限循環

[英]Python: threading multiple infinite loops at the same time

在Python中,我試圖使一個無限循環開始同時開始並行運行,一個簡單的示例將是:

from threading import Thread

def func(argument):
    while True:
        print(argument)

def main():
    Thread(target=func("1")).start()
    Thread(target=func("2")).start()
    Thread(target=func("3")).start()
    Thread(target=func("4")).start()

if __name__ == '__main__':
    main()

現在只有第一個線程運行,因此結果是:

1
1
1
1
....

它應該是:

1
2
3
4
....

我發現了幾個類似的問題,但是所提供的解決方案似乎都不適合我,包括在線程上使用join

因此,如果有人知道我的問題的解決方案,將不勝感激。

提前致謝!

第一個線程未啟動。 您正在main中調用func並嘗試將其返回值設置為target ,但是它會永遠運行並且永遠不會創建第一個線程。 你要:

from threading import Thread

def func(argument):
    while True:
        print(argument)

def main():
    Thread(target=func,args=("1",)).start()
    Thread(target=func,args=("2",)).start()
    Thread(target=func,args=("3",)).start()
    Thread(target=func,args=("4",)).start()

if __name__ == '__main__':
    main()

這會將func作為對象傳遞。 啟動線程將使用指定的args元組調用該對象。

您可以定義自己的線程:

from threading import Thread

class MyThread(Thread):
    def __init__(self,argument, **kwargs):
        super(MyThread, self).__init__(**kwargs)
        self.argument = argument

    def run(self):
        while True:
           print self.argument

if __name__ == '__main__':
    MyThread('1').start()
    MyThread('2').start()
    MyThread('3').start()
    MyThread('4').start()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM