2013-04-27 83 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),所以它不再指向相同的东西。另外,如果您要创建一个对象以在循环中引用它,您想尝试在循环外部保持初始化,所以您不要一遍又一遍地创建同一个对象。只需创建一个,然后在循环中引用它。