# Python

# flag

由于Python是动态编译的语言,和C/C++Java或者Kotlin等静态语言不同,它是在运行时一句一句代码地边编译边执行的, 而Java是提前将高级语言编译成了JVM字节码,运行时直接通过JVM和机器打交道,所以进行密集计算时运行速度远高于动态编译语言。 但是根据二八定律(帕累托法则),有80%的计算资源只被20%的程序所使用,因此在大部分情况下, 原生的CPython解释器已经足够满足日常编程,加上很多科学计算库底层都是C/C++写的,一般不会用Python做密集计算。

当你从官网下载并安装好Python后,就自带了一个CPython解释器,是使用最广的Python解释器, 我们在终端使用python xxx.py命令就是调用的CPython解释器。

PyPy使用了JIT(即时编译)技术,混合了动态编译和静态编译的特性,仍然是一句一句编译源代码, 但是会将翻译过的代码缓存起来以降低性能损耗。相对于静态编译代码,即时编译的代码可以处理延迟绑定并增强安全性。

# 线程池

# 线程数量控制

  • IO密集型

线程数 = CPU核心数/(1-阻塞系数)

Blocking Coefficient(阻塞系数)(一般为0.8~0.9之间) = 阻塞时间/(阻塞时间+使用CPU的时间)

  • 计算密集型

CPU有超线程:线程数 = CPU内核线程数*2

CPU无超线程:线程数 = CPU核数+1

# SQLite3

  • 连接符
连接符 说明
- 算术减法
!= 关系不等于
% 算术模量
& 逻辑与
* 算术乘法
/ 算术除法
| 逻辑或
|| 字符串串联
+ 算术加法
< 关系小于
<< 按位右移
<= 关系式小于或等于
<> 关系不等于
= 关系等于
== 关系等于
> 关系大于
>= 关系大于或等于
>> 按位左移
AND 逻辑与
GLOB 关系文件名匹配
IN 逻辑输入
LIKE 关系字符串匹配
OR 逻辑或

# 定时任务

Python3-定时任务五种实现方式

  1. sched模块
  2. 循环+sleep
  3. 线程模块中Timer类
  4. 第三方模块:schedule
  5. 定时框架:APScheduler、Celery