python windows 下多进程如何共享socket

feimat 发布于 2015/03/30 11:20
阅读 612
收藏 1

如题

由于python 多线程缺陷 对一个socket 要监听事件时,linux下回考虑 os.fork 子进程来帮忙一起监听这个socket

但是windows下没有守护进程 所有也没有os fork 这个函数

使用multiprocessing process 想传入socket 又会报unpickle 

请问windows 下有没什么办法 多进程 一起监听绑定同一个端口的socket

linux 代码:

def process_listen(listen_fd)
    #epoll 或 select 监听listenfd


if __name__ == "__main__":
    reload(sys)
    sys.setdefaultencoding('utf8')
    InitLog()
    port = int(sys.argv[1])
    try:
        listen_fd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
    except socket.error, msg:
        logger.error("create socket failed")
    try:
        listen_fd.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    except socket.error, msg:
        logger.error("setsocketopt SO_REUSEADDR failed")
    try:
        listen_fd.bind(('', port))
    except socket.error, msg:
        print "bind fail"
        logger.error("bind failed")
    try:
        listen_fd.listen(10240)
        listen_fd.setblocking(0)
    except socket.error, msg:
        logger.error(msg)


    child_num = cpu_count()
    c = 0
    while c < child_num:
        c = c + 1
        if 'Linux' in platform.system():
            newpid = os.fork()
            if newpid == 0:
                process_listen(listen_fd)
        else:
            pass
    process_listen(listen_fd)

加载中
返回顶部
顶部