【问题标题】:Android Python Multiple ThreadsAndroid Python 多线程
【发布时间】:2013-04-27 04:14:35
【问题描述】:

您好,我在使用 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 接管,就不再运行。

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

谢谢

【问题讨论】:

    标签: android python sl4a


    【解决方案1】:

    我不确定您在这里期待什么。您首先将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),所以它不再指向同一个东西。

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

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2018-06-26
      • 2023-03-08
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多