为什么第二个线程没有启动?

时间:2013-07-30 16:02:06

标签: python

此代码不能提供我期望的输出。有些事情一定是错的,但我无法理解它可能是什么。

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”块以查看某处是否有错误但没有错误!

1 个答案:

答案 0 :(得分:6)

看起来在启动线程之前调用了函数。我对Python不太熟悉,但请尝试:

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

注意函数名后面的逗号 - 将函数作为一个参数传递,并将参数参数的元组作为单独的参数传递。这允许start_new_thread在新线程准备就绪时调用您的函数。