码迷,mamicode.com
首页 > 其他好文 > 详细

day8 socket socketserver 异常 断言

时间:2016-03-26 13:53:06      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

http://www.cnblogs.com/wupeiqi/articles/5040823.htmlsend

http://www.cnblogs.com/alex3714/articles/5227251.html

sendall不断调用send ,一次性发送过去,传大文件不合适

SocketServer  通过多线程的方式处理

部分代码

# _*_ coding:utf8 _*_

import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):   #为什么是BaseRequestHandler,见alex博客,它下又分其他的东西
    #必须有handle方法
    def handle(self):
        #所有跟客户端的交互都是在这里的
        #pass
        print("New Conn:", self.client_address)  #打印客户端的地址
        data = self.request.recv(1024)
        print("Client Says:",data.decode())
        self.request.send(data)


if __name__ == "__main__":
    HOST, PORT = "localhost", 50007
    #把刚才写的类当作一个参数传发给ThreadingTCPServer这个类,下面的代码就创建了一个事例
    server = socketserver.ThreadingTCPServer((HOST, PORT),MyTCPHandler)
    #启动这个server,这个server会一直运行,除非ctrl+c停止
    server.serve_forever()

加上while True可实现的效果多个客户端可以连接,多并发的。客户端还是之前的那段代码几乎不变

 

 

 

 

异常处理
try:
    pass  
except

finally
无论是否出错都执行
else
没有出一场就执行
自己出发异常 raise

Exception 万能异常

自定义异常

一些业务逻辑无法满足需自己定义异常

http://www.cnblogs.com/wupeiqi/articles/5017742.html

class WupeiqiException(Exception):
 
    def __init__(self, msg):
        self.message = msg
 
    def __str__(self):
        return self.message
 
try:
    raise WupeiqiException(我的异常)
except WupeiqiException,e:
    print e

 

断言

assert 判断这个条件不成立就报错

作用 显示明确判断这个条件必须符合

 

 

join等待线程执行完毕

线程和进程的区别
GIL 全局解释器锁
防止原生线程同时修改一份数据,是非线程安全的(不能保证数据一致),需加锁
py调用C的原生线程,无法控制C的原声线程,启动10个原生线程,可能把数据该乱,py无法控制 那就只让一个时间一个线程修改
这个数据,真正运行的只有一个原生线程

线程可以共享数据,进程默认不能,需通过第三方管道或者队列(q)、Pipe

线程锁和GIL没有任何关系,区别:
GIL限制只有一个线程运行,解释器来回切换线程使得每个线程得到运行,
当第一个线程运行完得到结果,还没赋值给全局变量时第二个又运行了,第二个运行完把结果赋值给全局变量时
解释器又切换到了第一个线程,这时第一个线程会把为赋值的结果付回去,会冲掉第二个线程的值
GIL控制的是解释器的这块,防止解释器下面这一层的数据被改掉。线程锁是防止解释器上面的数据胡乱修改

进城之间无法通信
进程多了机器就挂,所以需要设置进程池(Pool)
callback 回调 可以把子进程的结果传给父进程

day8 socket socketserver 异常 断言

标签:

原文地址:http://www.cnblogs.com/dribs/p/5322685.html

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