此代码不能提供我期望的输出。有些事情一定是错的,但我无法理解它可能是什么。
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”块以查看某处是否有错误但没有错误!
答案 0 :(得分:6)
看起来在启动线程之前调用了函数。我对Python不太熟悉,但请尝试:
thread.start_new_thread(func1, ("slow" , 5))
thread.start_new_thread(func2, ("fast" , 1))
注意函数名后面的逗号 - 将函数作为一个参数传递,并将参数参数的元组作为单独的参数传递。这允许start_new_thread
在新线程准备就绪时调用您的函数。