python中异常处理的两种方式
recv是阻塞还是非阻塞的?
recv是阻塞还是非阻塞的?
socket分为阻塞和非阻塞两种,可以通过setsockopt,或者更简单的setblocking, settimeout设置。
阻塞式的socket的recv服从这样的规则:当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,阻塞直到缓冲区中有数据。
非阻塞式的socket的recv服从的规则则是:当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,产生EAGAIN的错误并返回(在Python中会抛出一个异常)。
两种情况都不会返回空字符串,返回空数据的结果是对方关闭了连接之后才会出现的。由于TCP的socket是一个流,因此是不存在“读完了对方发送来的数据”这件事的。
你必须要每次读到数据之后,根据数据本身来判断当前需要等待的数据是否已经全部收到,来判断是否进行下一个recv。
可以看一下hiredis库的接口设计,hiredis中的Reader有两个接口,分别是feed和gets,feed每次送入一部分数据,不需要保证是正确分片的;gets则返回已经得到的完整的结果,如果返回False,表示已经没有新的结果。基本上所有的TCP的socket编程都是遵循这样的方法:读入新数据;判断有没有完整的新消息;处理新消息,或者等待更多数据。
python可视化界面怎么做?
本文所演示的的可视化方法
散点图 (Scatterplot)
直方图 (Histogram)
小提琴图 (Violinplot)
特征两两对比图(Pairplot)
安德鲁斯曲线 (Andrews curves)
核密度图 (Kernel density estimation plot)
平行坐标图 (Parallel coordinates)
Radviz (力矩图?)
热力图 (Heatmap)
气泡图 (Bubbleplot)
这里主要使用Python一个流行的作图工具: Seaborn library,同时Pandas和bubbly辅助。为什么Seaborn比较好?
因为很多时候数据分析,建模前,都要清洗数据,清洗后数据的结果总要有个格式,我知道的最容易使用,最方便输入模型, 最好画图的格式叫做