Python
卓耿Drogon
醉舞经阁半卷书,坐井说天阔
展开
-
p2p双向传输300M的文件 开发心得(Python windows)
最近写了p2p的文件传输软件,300M的文件只需1.5秒左右即可完成传输。期间遇到了一些问题,这里总结一下开发心得。 1、多线程编程调用消息发送队列时,需要加锁,保证整块数据内部不会插入其它数据。参考之前的文章:socket send recv使用心得。再向发送队列添加数据时,需要容错处理,因为取队列的速度可能会低于加的速度导致加失败。 2、接收线程在处理数据时,需要根据数据头分块处理,每次recv(buff)获取的未必是一包可处理的处理,可能是半包或者超过一包。 3、根据要传送的文件大小,动态修改发送和接原创 2022-03-04 14:38:59 · 1065 阅读 · 2 评论 -
统计数据尾号分布(Python)
根据中签尾号,分析深圳小汽车车牌摇号数据。 d={} def analyze_line(line): if not re.match(r'[0-9]+\s+[0-9]+\s+\S', line): # +表示一个或多个 \s任意空字符 \S非空字符 return #过滤无效行 print(line, end='') m = re.search(r' [0-9]+', line) #匹配中间的数据,line[m.start[]:m.end()]=' 668710原创 2022-01-28 16:00:18 · 803 阅读 · 0 评论 -
常见的排序方法(Python实现)
主程序如下: from random import randint import time import copy GA_MAX = 19 #待排序的数据的数量 ga = [randint(0, 199) for i in range(GA_MAX)] #待排序的数据 ga_copy = [] #用于检测排序结果 def print_ga(): # print(ga) print(''.join(str(i) + ' ' for i in ga)) def random_ga()原创 2022-01-26 17:23:40 · 796 阅读 · 0 评论 -
socket send recv使用心得(Python windows)
最近使用python socket做了一些程序,遇到了一些问题,后来逐一解决了。这里结合之前的认知,总结以下心得,避免后来人踩坑。 1、send和sendall的区别 发送方使用sendall,不要使用send。sendall在返回的时候,会确保数据已传给tcpip;send并不一定会把数据全部发完,而是发一次,就返回发送的数据长度。在一般的程序设计中,我们更多场景是使用sendall,使用send就需要自己处理未发送的数据。 2、recv是拷贝数据,不是接收数据,每次拷贝多少? recv并不是取完对方发送原创 2021-10-27 14:49:58 · 2204 阅读 · 1 评论