派生服务器的限制
一般来说,刚才描述的分支模型(派生服务器)在类unix平台上运行良好,但是会受一些隐藏的重要限制的影响:
1.性能
在某些机器上,启动一个新的进程,在时间和空间资源方面的消耗特别大。
2.可移植性
目前的os.fork调用在类似windows那样的非unix平台上不能运行。
3.复杂性
分支会带来管理和捕获僵尸进程的所有方法—清理存在时间比它们的父进程少的子进程
线程
解决所有这些难题的一个方案就是使用线程而不是进程。线程可以并行运行和共享全局内存。因为所有线程都运行在同一进程和内存空间中,所以它们自动共享它们之间传递的套接字,其核心类似于子进程继承套接字描述符的方式。然而,和进程不一样,线程的启动通常耗费不大,而且,如今可以运行在类unix机器和标准python下的windows上。此外,很多人认为线程是程序的简化形式—在退出时,子线程会静静的消失,不会留下在服务器上出没的僵尸进程。
__author__ = 'JianqingJiang'
# -*- coding: utf-8 -*-
import time,_thread as thread # use threading.Thread().start()
from socket import *
myHost = ''
myPort = 50007
sockobj = socket(AF_INET,SOCK_STREAM) # make a TCP socket object
sockobj.bind((myHost,myPort))