阻塞IO(blockingIO)在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样:当用户进程调用了recvfrom这个系统调用,kernel内核就开始了IO的第一个阶段:准备数据。对于networkio(网络io)来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel(内核)就要等待足够的数据到来。等着对方把数据放到自己操作系统内存而在用户进程这边,整个进程会被阻塞。
系统 2019-09-27 17:53:03 2299
python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差。下面我们先简单的了解下python日期和时间数据类型及工具给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象fromdatetimeimportdatetimefromda
系统 2019-09-27 17:51:56 2299
前言Martin(Bob大叔)曾在《代码整洁之道》一书打趣地说:当你的代码在做CodeReview时,审查者要是愤怒地吼道:“Whatthefuckisthisshit?”“Dude,Whatthefuck!”等言辞激烈的词语时,那说明你写的代码是BadCode,如果审查者只是漫不经心的吐出几个“Whatthefuck?”,那说明你写的是GoodCode。衡量代码质量的唯一标准就是每分钟骂出“WTF”的频率。一份优雅、干净、整洁的代码通常自带文档和注释属性
系统 2019-09-27 17:50:58 2299
最近学习了一点python,那就试着做一做简单的编程练习。首先是这个编程的指导图,如下:对的,类似一个简单区块链的模拟。代码如下:classDaDaBlockCoin:#index索引,timestamp时间戳,data交易记录,self_hash交易hash,last_hash,上个hashdef__init__(self,idex,timestamp,data,last_hash):self.idex=idexself.timestamp=timest
系统 2019-09-27 17:49:38 2299
前几天和隔壁邻居玩斗地主被发现了,牌被没收了,斗地主是斗不了了,但我还想和邻居玩耍。如果你还想斗斗地主,戳:趁老王不在,和隔壁邻居斗斗地主,比比大小想破脑袋终于让我想到一个游戏,数独!什么叫数独?数独就是可以让我趁老王不在的时候和隔壁邻居一起玩耍的游戏!数独的规则1、数字1-9在每一行只能出现一次。2、数字1-9在每一列只能出现一次。3、数字1-9在每一个3x3宫内只能出现一次。3x3的宫内为A1-C3,A4-C6,A7-C9,D1-F3,D4-F6,D7
系统 2019-09-27 17:49:37 2299
由于客户提供的是excel文件,在使用时期望使用csv文件格式,且对某些字段内容需要做一些处理,如从某个字段中固定的几位抽取出来,独立作为一个字段等,下面记录下使用acaconda处理的过程;importpandasdf=pandas.read_excel("/***/***.xlsx")df.columns=[内部为你给你的excel每一列自定义的名称](比如我给我的excel自定义列表为:["url","productName","***",。。。,"
系统 2019-09-27 17:49:31 2299
启动python从IDLE启动PythonIDLE是一个PythonShell。Shell的意思是“外壳”,是一个通过键入文本与程序交互的途径(类似windows中的cmd。VisualStudio也是一种Shell)>>>是指Python准备好了,可以输入Python指令alt+N快速回到上一条语句(复制粘贴);alt+P下一条字符串print("hello,world")#"内是字符串"计算print(5+3)括号内没有""+print("ilove"
系统 2019-09-27 17:48:40 2299
在Python的标准库中,functools库中有很多对方法有操作的封装功能,partialObjects就是其中之一,他可以实现对方法参数默认值的修改。本文就以实例代码说明这一功能。下面就看下简单的应用测试实例。具体代码如下:#!/usr/bin/envpython#-*-coding:utf-8-*-#python2.7x#partial.py#authror:orangleliu'''functools中Partial可以用来改变一个方法默认参数1改
系统 2019-09-27 17:46:44 2299
python提取照片坐标信息的代码如下所示:fromPILimportImagefromPIL.ExifTagsimportTAGSimportosoutput="Z://result.csv"out=open(output,'a')out.write('lat,lon\n')fpath="Z://iphonephoto"foriteminos.walk(fpath):ob=item[2]foriinob:name=fpath+'/'+str(i)ret=
系统 2019-09-27 17:57:04 2298
(点击上方快速关注并设置为星标,一起学Python)乾明栗子发自凹非寺量子位报道|公众号QbitAIPython2终于走到了尽头。官方宣布,新一年的钟声响起之时(2020年1月1日),就是Python2落幕之日。之后,Python2自生自灭,就算天塌下来,官方也不会再改进了。他们解释称,并不想伤害Python2用户,这个决定是为了Python用户好。只有放弃Python2,他们才能让Python3变得更好。这一举动得到了不少支持与理解:也有人念旧。有网友开
系统 2019-09-27 17:55:41 2298
#-*-coding:utf-8-*-classSuperTupl(tuple):defto_lis(self):returnlist(self)defto_dic(self,set_key=0):a={str(val[set_key]):valforvalinself}returnSuperDic(**a)classSuperDic(dict):defclean(self,key):"""d=SuperDic(a=1,b=2,c=3)print(d.cl
系统 2019-09-27 17:55:31 2298
os模块介绍os.listdir(path)返回path指定的文件夹包含的文件或文件夹的名字的列表。os.open(file,flags[,mode])打开一个文件,并且设置需要的打开选项,mode参数是可选的。os.remove(path)删除路径为path的文件。如果path是一个文件夹,将抛出OSError;查看下面的rmdir()删除一个directory。os.rename(src,dst)重命名文件或目录,从src到dst。os.renames
系统 2019-09-27 17:52:41 2298
有时候需要比较大的计算量,这个时候Python的效率就很让人捉急了,此时可以考虑使用numba进行加速,效果提升明显~(numba安装貌似很是繁琐,建议安装Anaconda,里面自带安装好各种常用科学计算库)fromnumbaimportjit@jitdeft(count=1000):total=0foriinrange(int(count)):total+=ireturntotal测试效果:(关于__wrapped__见我的博文:浅谈解除装饰器作用(py
系统 2019-09-27 17:50:24 2298
希尔排序思想:算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。一般的初次取序列的一半为增量,以后每次减半,直到增量为1。defshell_sort(list):n=len(list)gap=n//2new_list=[]whilegap>1:foriinrange(gap):iflist[i]>list[i
系统 2019-09-27 17:48:17 2298
Python简介Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python是交互式语言:这意味着,您可以在一个Python提示符,直接互动执行写你的程序。Python是面向对象语言:这意味着Python支持面
系统 2019-09-27 17:47:39 2298