深入python
📌Tip
深入这个概念和大数据是一样的,多深入才叫深入?
这里会放一些自觉比较深的知识点和技巧,有些时候会和踩坑联动
深入python
GC原理剖析
^08132d #TODO GC看这里 Python垃圾回收机制!非常实用 - 知乎
记一次面试问题——Python 垃圾回收机制 · TesterHome
2小时吃透python内存管理和垃圾回收机制_哔哩哔哩_bilibili
环形数据结构
著名的环形引用 Python 如何在环状数据结构中管理内存 - i'm jackey - i'm jackey
编译器相关扩展了解
如果以后接触C的话可能就会再深入了解源码和python的机制
python语言编译原理相关的杂谈bilibili
网络编程详解
异步进阶
^347f89 异步的内容其实还有很多,这里只放已经收集到的
gevent的缺点,使用C实现底层协程,使用猴子将普通库打补丁,会导致有些错误无法捕捉
使用线程池异步
有些时候外部接口只提供了阻塞方法,没有提供异步方法,还是需要使用线程,但是一般不是特别常用
Click to see more
import asyncio,time,random
from concurrent.futures import ThreadPoolExecutor
import socket
from urllib.parse import urlparse
def func(a):
# 阻塞方法
t=random.randint(0,5)
print("arg is %s"%a)
print("start sleep %s"%t)
time.sleep(t)
print("end sleep %s"%t)
if __name__ == "__main__":
start_time = time.time()
loop = asyncio.get_event_loop()
executor = ThreadPoolExecutor(3) # 申请线程池
tasks = []
for i in range(0,20):
task = loop.run_in_executor(executor, func, i)
# 注意协程的这个函数,传入的是executor,返回是封装的Future对象,可以直接放在协程中使用
tasks.append(task)
loop.run_until_complete(asyncio.wait(tasks))
print("last time:{}".format(time.time()-start_time))
运行结果
arg is 0
start sleep 4
arg is 1
start sleep 4
arg is 2
start sleep 3
end sleep 3
arg is 19
start sleep 3
end sleep 4
end sleep 4
...
协程模块asyncio和gevent的基本使用_Generalzy的博客-CSDN博客
多进程异步
这才是重点,因为GIL的原因多线程和异步没有耦合的必要,但是多进程+协程可以榨干CPU
twisted
gevent
混合编程
起初是一个同学然你给我帮他java调用python,python调java,发现并不是很好用
go建议直接RPC
java混合编程
C混合编程
热加载
python程序的热加载还是程序的热加载?
pythonic的约定
python中一切皆对象的本质 # py的对象底层
GitHub - piglei/one-python-craftsman: 来自一位 Pythonista 的编程经验分享,内容涵盖编码技巧、最佳实践与思维模式等方面。
Loading...