单线程Python BaseHTTPServer

时间:2014-11-05 11:56:29

标签: python multithreading basehttpserver

我在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

好吧它变得更奇怪了:

  • 在windows中,上面的代码显示了两个线程(taskmanager线程)
  • 在linux(uc或mint)中,上面的代码显示了1个帖子。

使用以下代码(更接近我的应用程序):

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()

这显示

  • in linux mint 2 threads
  • 在Windows 3主题
  • 在uclinux 3个帖子中

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

0 个答案:

没有答案