我在Python 2.6.6或2.7.5中使用了一个简单的BaseHTTPServer 文档声明它是单线程的,我在BaseHTTPServer或SocketServer的文档或源代码中找不到任何线索,但实际情况并非如此。
但是下面的代码启动了一个带有2个线程的应用程序(根据ps或Taskmanager)。在Windows中,如在Linux中。
我没有到这里来的? 是否可以拥有一个真正的单线程baseHttpServer?
(我正在研究嵌入式系统并试图减少内存线程)
import BaseHTTPServer
httpd = BaseHTTPServer.HTTPServer(('', 8888), BaseHTTPServer.BaseHTTPRequestHandler)
httpd.serve_forever()
--------------------- edit
好吧它变得更奇怪了:
使用以下代码(更接近我的应用程序):
import BaseHTTPServer
import threading
import time
class test(threading.Thread):
def stop(self):
self.httpd.shutdown()
def run(self):
self.httpd = BaseHTTPServer.HTTPServer(('', 8888), BaseHTTPServer.BaseHTTPRequestHandler)
self.httpd.serve_forever()
print "killme"
t = test()
t.start()
try:
while(True):
time.sleep(1)
except:
t.stop()
这显示
busybox的:
ps |grep test
PID USER VSZ STAT COMMAND
12234 user 8476 S python test.py
12244 user 8476 S python test.py
12245 user 8476 S python test.py
12252 user 2752 R grep test
薄荷:
ps -L -F -A | grep test
UID PID PPID LWP C NLWP SZ RSS PSR STIME TTY TIME CMD
deif 2446 2018 2446 0 2 5290 5432 0 15:30 pts/0 00:00:00 python test.py
deif 2446 2018 2447 0 2 5290 5432 0 15:30 pts/0 00:00:00 python test.py