Python线程:只启动一个线程

时间:2011-11-24 15:48:33

标签: python multithreading

thread.start_new_thread(target=self.socketFunctionRead1())
print "Thread 1"
thread.start_new_thread(target=self.socketFunctionWrite1())
print "Thread 2"
thread.start_new_thread(target=self.socketFunctionRead2())
print "Thread 3"
thread.start_new_thread(target=self.socketFunctionWrite2())
print "Thread 4"

我正在尝试启动多个线程,但只启动了一个线程,如何通过启动其他线程使程序更进一步?

3 个答案:

答案 0 :(得分:2)

而不是thread.start_new_thread(target=self.socketFunctionRead1())

尝试thread.start_new_thread(target=self.socketFunctionRead1)

由于括号,调用该函数并将函数的返回值赋给target。由于thread.start_new_thread(target=self.socketFunctionRead1())可能是一个阻塞调用,因此只调用此函数。

在thread.start_new_thread中,target应该是一个可调用的(一个行为类似于函数的对象)。

修改

来自Python documentation

  

thread.start_new_thread(function,args [,kwargs])

     

开始一个新主题   并返回其标识符。线程执行函数功能   使用参数列表args(必须是元组)。可选的   kwargs参数指定关键字参数的字典。当。。。的时候   函数返回,线程默默退出。当功能   以未处理的异常终止,打印堆栈跟踪   然后线程退出(但其他线程继续运行)。

这意味着你应该调用thread.start_new_thread(self.socketFunctionRead1)。

如果将关键字参数传递给start_new_thread,它们将被传递给self.socketFunctionRead1。

您的线程的目标是必需的,而不是关键字参数。

答案 1 :(得分:1)

答案 2 :(得分:0)

也许你永远不会在退出程序之前等待线程结束......

当程序结束时,它退出并杀死所有线程。在退出程序之前,你必须等待所有线程的结束,就像EmirAkaydın所说的