2013-04-27 126 views
0

您好,我在使用Python SL4A在Android中運行線程方面存在問題。我想運行在同一時間兩個線程,但似乎有問題Android Python多線程

from threading import * 
import time 
def func1(): 
    while True: 
     print("func1") 

def func2(): 
    while True: 
     print("func2") 


thread = Thread(target = func1) 
thread.start() 
for i in range(1000): 
    thread = Thread(target = func2) 
    thread.start() 
    time.sleep(2) 
time.sleep(2) 

第一線FUNC1開始很好,但那麼一旦FUNC2接管是不會再運行。

有沒有人有任何建議如何解決這個問題?

謝謝

回答

0

我不確定你在這裏期待什麼。您首先將func1傳入線程,然後啓動它。之後你再也不會引用func1或線程。

稍後,您將創建一個迭代器,在該迭代器中,您將func2傳遞到一個新線程中並啓動它。你重複這個過程一千次,每次之間有兩秒鐘的睡眠時間。

你想讓這兩個函數運行一千次嗎?如果是這樣的......

thread1 = Thread(target=func1) 
thread2 = Thread(target=func2) 

for i in range(1000): 
    thread1.start() 
    thread2.start() 
    time.sleep(2) 

注意,在你的代碼中的變量thread是Iterator之前分配Thread(target=func1)。在迭代器中,同名thread被分配爲Thread(target=func2),所以它不再指向相同的東西。另外,如果您要創建一個對象以在循環中引用它,您想嘗試在循環外部保持初始化,所以您不要一遍又一遍地創建同一個對象。只需創建一個,然後在循環中引用它。