码迷,mamicode.com
首页 > 编程语言 > 详细

python_day9 进程池

时间:2017-06-27 10:54:23      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:bre   socket   use   data   append   请求   nbsp   apply   客户端   

通过进程池 实现 socket

 

from multiprocessing import Process,Pool
import os,sys
from socket import *
import time
server=socket(AF_INET,SOCK_STREAM)
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
server.bind((‘127.0.0.1‘,80))
server.listen(5)


def go(conn,addr):
while True:
try:
P=os.getpid()
data = conn.recv(1024)
print(P)
# conn.send(P)
except Exception as e:
print(e)
break


if __name__ == ‘__main__‘:
pool=Pool()
r_l=[]
while True:
conn,addr =server.accept()
res=pool.apply_async(go,args=(conn,addr))
r_l.append(res)

默认情况下 进程池中可以启动的进程数 是 CPU 的核数,我这里是4核
所以我用5个进程 测试, 当第5个客户端 试图 链接服务器的时候 现象是 等待服务器 返回;
实际上服务器是在处理前4个的请求, 当第一个的请求断掉了, 第5个连上了;
当这个时候, 第一个客户端 连上的 和 第5个客户端连上的 在服务器端 是同一个进程 处理的,也就是 同一个PID



 

python_day9 进程池

标签:bre   socket   use   data   append   请求   nbsp   apply   客户端   

原文地址:http://www.cnblogs.com/onda/p/7083812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!