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))

请注意函数名后面的逗号 - 您将函数作为一个参数传入,并将参数参数的元组作为单独的参数传入。这可以start_new_thread在新线程准备好时调用您的函数。

于 2013-07-30T16:05:28.380 回答