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"
我正在尝试启动多个线程,但只启动了一个线程,如何通过启动其他线程使程序更进一步?
答案 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应该是一个可调用的(一个行为类似于函数的对象)。
修改强>
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所说的