python windows 下多进程如何共享socket

发布于 2021-11-27 13:43:20 字数 2063 浏览 923 评论 0

如题

由于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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文