0

こんにちは、Android で Python SL4A を使用してスレッドを実行する際に問題が発生しています。同時に 2 つのスレッドを実行しようとしていますが、問題があるようです

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新しいスレッドに渡して開始する反復子を作成します。このプロセスを 1000 回繰り返し、それぞれの間に 2 秒間のスリープを入れます。

両方の関数を 1000 回実行しますか? もしそうなら...

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)ているため、同じものを指していません。

また、ループで参照するオブジェクトを作成している場合は、ループの外側で初期化を試みて保持する必要があるため、同じオブジェクトを何度も作成することはありません。1 つ作成して、ループ内で参照するだけです。

于 2013-05-23T05:00:56.350 に答える