最近需要在python中做大日志文件中做正则匹配 开始直接在for in 中每行做re.findall,后来发现,性能不行,就在re前面做一个基本的字符串包含判断 (str in str),如果不包含直接continue 效率对比: 1.只做一次包含判断: real 0m13.740suser 0m12.683ssys 0m1.046s 2.做两次包含判断: real 0m9.226suser 0m8.134ssys 0m1.069s 3.不做包含判断: real 0m25.205suser 0…
GIL机制导致如下结果: Python的多线程程序并不能利用多核CPU的优势 (比如一个使用了多个线程的计算密集型程序只会在一个单CPU上面运行)python多线程适合io操作密集型的任务(如socket server 网络并发这一类的):python多线程不适合cpu密集操作型的任务,主要使用cpu来计算,如大量的数学计算.那么如果有cpu密集型的任务怎么办,可以通过多进程来操作(不是多线程).假如CPU有8核,每核CPU都可以用1个进程,每个进程可以用1个线程来进行计算. 1.线性模式测试…
python中insert和append方法都可以向列表中插入数据只不过append默认插入列表的末尾,insert可以指定位置插入元素. 我们来测试一下他俩插入数据的效率: 测试同时对一个列表进行插入字符' a ',插入10000次 先来insert的方式插入 import datetime listA=[1,2,3] startTime = datetime.datetime.now(); for i in range(0,10000): listA.insert(3,'a') endTim…
我们用 生成一个0到((1万倍n)-1)的list做例子 首先这种方式复杂度为平方级 ''' def test1(n): lst = [] for i in range(n*10000): lst = lst + [i] return lst ''' 如n=5,平均运行花费3秒2: 如果n=10的话,平均运行花费飙到14秒9: 是因为复制一个长度为n的list,本身的复杂度就是线性级的了. #####################################################…
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法. 1 find()方法: )##从下标1开始,查找在字符串里第一个出现的子串:返回结果3 info = 'abca'print info.find('333')##返回-1,查找不到返回-1 2 index()方法: python 的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1 i…
python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取中间的两个字符 s[1:3] #输出为:'23' #从某个位置到结尾 s[4:] #输出为:'56789' #字符串的顺序不仅仅可以顺着数,也可以逆着数 s[-8:7] #输出为'234567',这个在截取文件名称时是比较有用的,比如用s[-3:],可以得到最后三位的字符串. 字符串的查找 查找当前…
完整格式链接:https://blog.imakiseki.cf/2022/03/07/techdev/python-cpp-string-find-perf-test/ 背景 最近在备战一场算法竞赛,语言误选了 Python ,无奈只能着手对常见场景进行语言迁移.而字符串查找的场景在算法竞赛中时有出现.本文即对此场景在 Python 和竞赛常用语言 C++ 下的速度进行对比,并提供相关参数和运行结果供他人参考. 参数 硬件和操作系统 -` root@<hostname> .o+` -----…
生成随机密码#!/usr/bin/env python import stringfrom random import choice def gen_pass(num=9): all_chs = string.letters + string.digits pwd = '' for i in range(9): pwd += choice(all_chs) return pwd if __name__ == '__main__': print gen_pass (4) print gen_pas…
字符串 ASCII码采用1个字节来对字符进行编码,最多只能表示256个符号. UTF-8以3个字节表示中文 GB2312是我国制定的中文编码,使用1个字节表示英语,2个字节表示中文:GBK是GB2312的扩充,而CP936是微软在GBK基础上开发的编码方式.GB2312.GBK和CP936都是使用2个字节表示中文. Python 3.x完全支持中文字符,默认使用UTF8编码格式,无论是一个数字.英文字母,还是一个汉字,都按一个字符对待和处理.(字符并非字节) 在Python中,字符串属于不可变序…
规则表达式(Regular Expression, RE),又称作正则表达式,通常用于检索.替换符合指定规则的文本,正则表达式定义的规则,称作模式(Pattern),即正则表达式的作用是从文本中查找到符合模式的文本.在Python中使用正则表达式,需要导入re模块. import re 对于简单的正则表达式,请参考文档:正则表达式 第一篇:元字符 一,re模块常用的函数 从帮助文档中可以看到,re模块导出的函数主要是:match.search.sub.split.findall.finditer…