高速随机字符串生成工具
上测试
import time
import string
import random
import secrets
strat1=time.perf_counter()
#chat-gpt 3.5 4k生成的 ID生成 工件
def make_id():
characters = string.ascii_letters + string.digits
code = ''.join(random.choice(characters) for _ in range(8))
return code
for i in range(1,501,1):
print(make_id())
end1=time.perf_counter()
runtime1=end1-strat1
runt_ms1=runtime1*1000
strat2=time.perf_counter()
#secrets 工具
def make_id():
return secrets.token_urlsafe(6)
for i in range(1,501,1):
print(make_id())
end2=time.perf_counter()
runtime2=end2-strat2
runt_ms2=runtime2*1000
print('runt_ms:',runt_ms1)
print('runt_ms:',runt_ms2)
InsCode结果1:
runt_ms: 2.6389658451080322
runt_ms: 1.7378749325871468
占比:65.8543928%
InsCode结果2:
runt_ms: 2.563776448369026
runt_ms: 1.7530238255858421
占比:68.3766257%
InsCode结果3:
runt_ms: 2.6287315413355827
runt_ms: 1.7277728766202927
占比:65.7264863%
博主测试1:
runt_ms: 45.988599995325785
runt_ms: 38.23320000083186
占比:83.1362555%
博主测试2:
runt_ms: 51.702999997360166
runt_ms: 45.61900000408059
占比:88.2327911%
使用
使用方式:【Python标准库】用了Secrets,再也不用担心密码泄露
secrets中主要有三个函数,分别用于生成随机字节字符串、十六进制文本字符串以及URL随机字符串,其使用方法如下,输入参数为字符串长度。
>>> from secrets import * >>> token_bytes(16) b't\x98\x00\x86\xfa:\xdeV(E\xb0\x82\x96\x80T\xb3' >>> token_hex(16) '1b65dcaf5f1e9bd96fa8639b966d7cde' >>> token_urlsafe(16) '8EgjGpnKISzTM2WgPYk4tQ'
当然,除了这三个主要函数之外,secrets也具备基本的随机数功能,即
- choice(lst) 从lst中挑选出一个元素返回
- randbelow(n) 生成小于n的自然数
- randbits(n) 生成不超过n位bit的随机整数
>>> choice([1,2,3]) 1 >>> randbelow(5) 3 >>> randbits(5) 10