2

このコードでは、期待どおりの出力が得られません。何かが間違っているに違いないのですが、何が原因なのか理解できません。

import thread
import time

def func1(threadName, sleepTime):
    while 1 < 2:
        time.sleep(sleepTime)
        print "%s" % (threadName)

def func2(threadName, sleepTime):
    while 1 < 2:
        time.sleep(sleepTime)
        print "%s" % (threadName)


try:
    thread.start_new_thread(func1("slow" , 5))
    thread.start_new_thread(func2("fast" , 1))
except Exception, e:
    print str(e)

私が期待する出力は次のようなものです:

fast
fast
fast
fast
slow
fast

などですが、最初のスレッドだけが開始されているようです。後で「try and except」ブロックを実装して、どこかにエラーがあるかどうかを確認しましたが、エラーはありません!

4

1 に答える 1

6

スレッドが開始される前に関数が呼び出されているようです。私はPythonにあまり慣れていませんが、試してみてください:

thread.start_new_thread(func1, ("slow" , 5))
thread.start_new_thread(func2, ("fast" , 1))

関数名の後のコンマに注意してください。関数を 1 つの引数として渡し、引数パラメーターのタプルを別の引数として渡します。これによりstart_new_thread、新しいスレッドの準備ができたときに関数を呼び出すことができます。

于 2013-07-30T16:05:28.380 に答える