2016-04-25 99 views
3

我希望能夠同時運行兩個while True循環。 這可能嗎?可以同時運行兩個無限循環嗎?

我對Python非常陌生,所以我不知道如何解決這個問題。

這是我做的代碼:

import time 

def infiniteLoop(): 
    while True: 
     print('Loop 1') 
     time.sleep(1) 

infiniteLoop() 

while True: 
    print('Loop 2') 
    time.sleep(1) 

現在,它只是打印出「循環1」

在此先感謝

+10

您需要兩個線程來運行兩個循環。 – sobolevn

+1

爲什麼你想要兩個獨立的循環同時運行? –

+0

正如你使用'time.sleep'而不是更復雜的框架,如扭曲或龍捲風,你是綁在使用線程。 –

回答

5

同時運行兩個循環,你要麼需要使用兩個線程或將循環交錯在一起。

方法1:

import time 
def infiniteloop(): 
    while True: 
     print('Loop 1') 
     time.sleep(1) 
     print('Loop 2') 
     time.sleep(1) 

infiniteloop() 

方法2:

import threading 
import time 

def infiniteloop1(): 
    while True: 
     print('Loop 1') 
     time.sleep(1) 

def infiniteloop2(): 
    while True: 
     print('Loop 2') 
     time.sleep(1) 

thread1 = threading.Thread(target=infiniteloop1) 
thread1.start() 

thread2 = threading.Thread(target=infiniteloop2) 
thread2.start() 
+1

非常感謝!真的幫了! –

+0

它應該是'target = infiniteloop1'而不是'target = infiniteloop1()'與infiniteloop2相同 –

+0

謝謝@Francisco。剛編輯 – Brian

1

雖然布賴恩的答案有你覆蓋,Python的發電機的功能(和yield魔術)允許與兩個實際的環的解決方案,無線程:

def a(): 
    while True: # infinite loop nr. 1 (kind of) 
     print('Loop 1') 
     yield 

def b(): 
    for _ in a(): # infinite loop nr. 2 
     print('Loop 2') 

> b() 
Loop 1 
Loop 2 
Loop 1 
Loop 2 
.... 

這裏,中的兩個循環和b()確實是交錯的,因爲在每次迭代中,執行都在兩者之間來回傳遞。

+0

非常相似,我把第一個方法;) – Brian

+0

是的,沒有。你的第一個解決方案只有一個循環(有兩個'print'語句)。 – schwobaseggl

相關問題