点击蓝字获取更多优惠信息
1
本文将简单讲述一下Python探针的实现原理。同时为了验证这个原理,我们也会一起来实现一个简单的统计指定函数执行时间的探针程序。
探针的实现主要涉及以下几个知识点:
sys.meta_path
sitecustomize.py
sys.meta_path
sys.meta_path这个简单的来说就是可以实现importhook的功能,当执行import相关的操作时,会触发sys.meta_path列表中定义的对象。关于sys.meta_path更详细的资料请查阅python文档中sys.meta_path相关内容以及PEP。
sys.meta_path中的对象需要实现一个find_module方法,这个find_module方法返回None或一个实现了load_module方法的对象(代码可以从github上下载part1):
importsysclassMetaPathFinder:deffind_module(self,fullname,path=None):print(find_module{}.format(fullname))returnMetaPathLoader()classMetaPathLoader:defload_module(self,fullname):print(load_module{}.format(fullname))sys.modules[fullname]=sysreturnsyssys.meta_path.insert(0,MetaPathFinder())if__name__==__main__:import