2015-03-02 78 views
-2

我需要知道为什么当我运行下面的代码它给我这个错误蟒蛇: - 无法启动新的线程

Traceback (most recent call last): 
    File "C:\Users\moksh\Desktop\moksh.py", line 29, in <module> 
    server_B_thread.start() 
error: can't start new thread 

代码:

#!/usr/bin/python 

import threading 
import time 
import SocketServer 
import socket 

class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler): 

    def handle(self): 
     self.allow_reuse_address = True 
     self.data = self.request.recv(1024).strip() 
     print "%s wrote: " % self.client_address[0] 
     print 'Connection from',self.client_address[0] 
     print self.data 
     self.request.send(self.data.upper()) 

class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): 
    pass 

if __name__ == "__main__": 

    HOST = '0.0.0.0' 
    PORT = 1000 
    while PORT <1900: 
     server_B = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) 
     server_B_thread = threading.Thread(target=server_B.serve_forever) 
     server_B_thread.setDaemon(True) 
     server_B_thread.start() 
     PORT +=1 

    while 1: 
     time.sleep(1) 

回答

1

你试图开始900线程,并可能在操作系统上达到极限。我不知道你要做什么,但我会考虑Twisted,这可能会有更多的选项来运行大容量的TCP服务器。

+0

谢谢丹,我需要编写一个程序来监听所有端口(65535) – 2015-03-03 12:44:42

+0

通常,1024和更低的端口是保留的。我质疑你正在尝试解决的任务需要多个开放端口......但Twisted应该有所帮助,因为你可以绑定到多个端口而不使用那么多的进程。 – 2015-03-03 19:24:32