jupyter中执行
import sys
!{sys.executable} --version
Python 3.9.17
# -*- coding: UTF-8 -*- 或者 # coding=utf-8
|
timeit
import timeit
code_to_test = """
for i in range(10000):
pass
"""
elapsed_time = timeit.timeit(code_to_test, number=1)
print("代码执行1次的平均时间为:", round(elapsed_time*1000*1000), "微秒")
输出:
代码执行1次的平均时间为: 184 微秒
profile
import profile
def foo():
for i in range(10000):
pass
profile.run("foo()")
5 function calls in 0.000 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 2701821783.py:3(foo)
1 0.000 0.000 0.000 0.000 :0(exec)
1 0.000 0.000 0.000 0.000 :0(setprofile)
1 0.000 0.000 0.000 0.000 string:1(module)
1 0.000 0.000 0.000 0.000 profile:0(foo())
0 0.000 0.000 profile:0(profiler)
|
import time
# 记录开始时间
start_time = time.time()
# 你想要测量执行时间的代码块
# 例如,这里我们用一个简单的循环来模拟一些工作
for i in range(1000000):
pass # 这是一个空操作,只是为了模拟一些工作
# 记录结束时间
end_time = time.time()
# 计算执行时间
execution_time = end_time - start_time
print(f"执行时间: {execution_time:.6f} 秒")
|
|
|
|
|
|
|
from tempfile import NamedTemporaryFile
import os
def add_crontab_on_reboot(file):
with os.popen("crontab -l", "r") as pipe:
current = pipe.read()
current += f"@reboot /home/xt/anaconda3/bin/python {file}\n"
with NamedTemporaryFile("w") as f:
f.write(current)
f.flush()
os.system(f"crontab {f.name}")
def add_crontab(file):
with os.popen("crontab -l", "r") as pipe:
current = pipe.read()
current += f"40 16 * * * /home/xt/anaconda3/bin/python {file}\n"
with NamedTemporaryFile("w") as f:
f.write(current)
f.flush()
os.system(f"crontab {f.name}")
def clear_crontab():
with NamedTemporaryFile("w") as f:
f.write("\n")
f.flush()
os.system(f"crontab {f.name}")
def get_crontab():
with os.popen("crontab -l", "r") as pipe:
current = pipe.read()
print(current)
get_crontab()
collections.deque: 定长,进一个,自动出一个
import collections
data_index = 0
def test_queue():
global data_index
span = 5
buffer = collections.deque(maxlen=span) # 队列
for i in range(span):
buffer.append(data_index)
data_index = data_index +1
print("query len:",len(buffer))
for i in range(10):
buffer.append(data_index)
data_index = data_index +1
print("first value:",buffer[0],", query len:",len(buffer))
test_queue()
query len: 5
first value: 1 , query len: 5
first value: 2 , query len: 5
first value: 3 , query len: 5
first value: 4 , query len: 5
first value: 5 , query len: 5
first value: 6 , query len: 5
first value: 7 , query len: 5
first value: 8 , query len: 5
first value: 9 , query len: 5
first value: 10 , query len: 5
import queue # maxsize 队列的最大长度 # 队列满后,程序被阻塞 # 若为零,则不限长度 q = queue.Queue(maxsize=3) q.put(1) q.put(2) q.put(3) q.qsize() 3 q.full() True
下面这段代码不会报错,而是被阻塞,一直等待...
try:
q.put(4)
except queue.Full:
print("queue full")
不包含字母的表达式
ss = "[1,2,3,4,5]" print(type(eval(ss))) # list
包含字母的表达式
a=1 ss="a>2" print(eval(ss)) # False
元组format
a=('a','b')
ss="{}".format(a) #"('a', 'b')"
b=eval(ss)
type(b) # tuple
数字前补0
start_hour = 1
print("%02d"%start_hour) # 01
数字前面本没有0,补了0之后,就不再是数字了
num_count = 3
for i in range(num_count):
res = '%019d'%i
print(res,type(res))
输出:
0000000000000000000 class 'str'
0000000000000000001 class 'str'
0000000000000000002 class 'str'
global:让一个局部变量升级为全局变量,哪所你写层嵌套,哪怕写到方法里
aa = 1
class A:
def a(self):
global aa
aa = 2
class B:
def b(self):
global aa
aa = 2*aa
ca = A()
cb = B()
ca.a()
cb.b()
cb.b()
aa最后为8
列表的空
ll = []
if ll:
print('有')
else:
print('空')
输出:
空
该用法较少,更多的写法是取列表长度,直接判断长度是否为0
字符串首尾的空
去除首尾的空格 ll = " a b c ".strip() ll 'a b c'
数组
a=["aa","bb"]
b=[11,22]
for i,(j,k) in enumerate(zip(a,b)):
print(i,j,k)
输出:
0 aa 11
1 bb 22
字符串
a="abb"
b="123"
for i,(j,k) in enumerate(zip(a,b)):
print(i,j,k)
输出:
0 a 1
1 b 2
2 b 3
a="ab b"
b="12 3"
for i,(j,k) in enumerate(zip(a,b)):
print(i,j,k)
输出:
0 a 1
1 b 2
2
3 b 3
import math rownum = 6 interval = 3 math.ceil(rownum / interval) 2 rownum = 7 interval = 3 math.ceil(rownum / interval) 3
import sys sys.exit(0)
try except Exception as e
try:
_mysql = pymysql.connect(host=db_dict["db1.host"],
port=db_dict["db1.port"],
user=db_dict["db1.username"],
password=db_dict["db1.password"],
database=db_dict["db1.database"],
charset=db_dict["db1.charset"])
except Exception as e:
error_msg = "{} {} {} {} mysql db connect error".format(db_dict["db1.host"],db_dict["db1.port"],
db_dict["db1.username"],
db_dict["db1.database"])
print(error_msg)
print(e)
通常情况下,要打印出原来的异常信息,在异常触发时可以更好地定地问题
同时,也自己写一个辅助的信息,对异常进行补充
[-9223372036854775808,9223372036854775807]
a=9223372036854775807 a-1 9223372036854775806 92万亿 19位数,且开头第1位是9,很大的一个数,这个数用来做库表的ID,通常够用 a=-9223372036854775808 a+1 -9223372036854775807