0

您好,我在使用 Python SL4A 在 Android 中运行线程时遇到问题。我正在尝试同时运行两个线程,但似乎有问题

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 接管就不再运行。

有人对如何解决这个问题有任何建议吗?

谢谢

4

1 回答 1

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分配的。Thread(target=func1)在迭代器内部,同名thread, 被赋值Thread(target=func2),所以它不再指向同一个东西。

此外,如果您正在创建一个对象以在循环中引用它,您希望尝试将初始化保持在循环之外,因此您不会一遍又一遍地创建相同的对象。只需创建一个,然后在循环中引用它。

于 2013-05-23T05:00:56.350 回答