python windows 下多进程如何共享socket
如题
由于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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论