python
文章平均质量分 76
mania_yan
平安科技AI中心技术领域专家
展开
-
使用Poetry对python工程进行依赖管理和打包
为什么推荐使用poetry而不是pipenv?poetry除了具有依赖管理,还具有打包和发布的功能(不再需要twine)poetry在安装过程中,具有过程进展显示(而不是像pipenv长时间卡住都不知道)原创 2024-01-05 15:07:00 · 607 阅读 · 0 评论 -
如何从天眼查获取海量公司信息
从天眼查获取海量公司地址的方法原创 2023-01-19 11:55:30 · 5136 阅读 · 1 评论 -
很火的Fastapi框架,用async函数真的比普通函数快吗?
python的新款异步框架FASTAPIhttps://fastapi.tiangolo.com/是一款最近很火的框架。我过去使用了Flask很多年,当一使用上fastapi,就喜欢上它了。今天的问题是:我们的函数到底应该定义为async还是普通函数?直接上演示代码。from fastapi import FastAPIimport timeimport asyncioimport osapp = FastAPI()@app.get("/async_slowest")async原创 2020-09-28 22:58:54 · 14078 阅读 · 6 评论 -
放下你那python的古老异步框架吧
上古时代的人们会使用tornado等异步框架来提高并发性能。我以前则采用gevent的协程方式来提供并发能力。现在有更快的汽车。如果只知道python新版本的async/await的用法,也是不够快的。python默认采用asyncio的事件loop,如何让它更快呢?采用uvloop取代python默认的asyncio.为什么uvloop可以更快?因为它采用了更快的cython编写(不是cpython),cython会将python转为c级别。并基于libuv构建..原创 2020-09-04 23:59:22 · 503 阅读 · 0 评论 -
基于pyinstaller的算法代码单执行文件打包指南
环境:在一台可以正常运行算法的服务器上(否则在普通电脑(可能没有cuda或nvidia驱动等原因)打包的制品不可用) 运行一个algo的docker容器里并挂载算法代码(一定要采用python源代码,不能采用cython过的动态库)(参考命令:docker run -it --name one_file -v /home/imsight/one_file/ct_chest_lung_nodule/:/appregistry.xxx.com/softwaredevelop/xxxx/algo:1.7..原创 2020-07-06 22:27:15 · 531 阅读 · 0 评论 -
采用python3.7强行替换ubuntu18.04的python3.6的副作用
放射的常用基础镜像放射目前采用ubuntu18.04和python3.7, 使用最多的基础镜像为:registry.imsightmed.com/softwaredevelop/devops-docker/python:3.7这个镜像的Dockerfile强行将系统的python从默认的3.6指向了3.7。目前已知的副作用add-apt-repository 无法正常使用如:add-apt-repository -y ppa:alex-p/tesseract-ocr添加新的.原创 2020-07-06 22:24:31 · 642 阅读 · 0 评论 -
gunicorn的实践经验
为什么要上gunicorn?flask自带的web容器不满足生产环境的要求。生产环境不能直接采用flask自带的web容器。gunicorn是目前应用较广的支持WSGI的web容器。gunicorn能否替代flask自带的web容器进行开发调试?可以,加入- -reload,则代码变更后,gunicorn会自动重启。gunicorn的worker选择gevent时的...原创 2020-03-08 21:42:31 · 4095 阅读 · 0 评论 -
算法依赖库的踩坑记录
torchvision在pipenv install出现版本依赖错误官方指明:TorchVision requires PyTorch 1.2 or newer因此,当pytorch为1.0.1时,需要指定安装torchvision==0.2.0(0.2.0为测试通过的版本号)pyinstaller打包出现assert self.hook_module_name not in H...原创 2020-03-08 21:41:20 · 530 阅读 · 0 评论 -
基于python3.7的脚本日期入参的最简单实现
最简单的日期入参 importargparse importdatetime parser=argparse.ArgumentParser() parser.add_argument('-s',"--startdate", help="The Start Date - format YYYY-MM-DD", required=True,...原创 2020-03-08 21:30:38 · 516 阅读 · 0 评论 -
python的并发库grequests使用样例
import grequestsurl = “http://xxxxx” times = 1000def get_ip_parallel(): rs = (grequests.get(url) for i in range(times)) rets = grequests.map(rs) ips = [ret.json() for r...原创 2018-06-15 19:10:44 · 7558 阅读 · 0 评论 -
Pipenv带给我的便利性
过去不便捷的点(还算不上痛点): 1. 系统的python库越安装越多,慢慢就会出现版本不兼容、冲突的告警; 2. 使用虚拟环境,经常要activate和deactivate的切换; 3. 虚拟环境经常会公用(例如python3),导致越来越大,安装了什么都不确定; 4. requirements.txt经常要看代码import情况,手动添加,加上运行、测试来保证不多不少,很low; 5...原创 2018-05-21 12:58:41 · 1312 阅读 · 0 评论 -
python import自己的库
背景 import自己的库失败。 举例: 目录下有client文件夹,文件夹里有foo.py文件。 需要import这个foo.py,发现提示找不到该文件解决方法 在client文件夹里,添加init.py(内容为空)即可解决。 任何的库都需要这么一个文件,python才会认为这是库。...原创 2018-04-11 10:06:10 · 5717 阅读 · 2 评论 -
python用bumpversion管理软件的版本信息
python提供了bumpversion工具,可以极简的管理项目的版本。准备pip install bumpversion在项目根目录下新建.bumpversion.cfg,内容可以参考:[bumpversion]current_version = 0.9.1commit = Truetag = False[bumpversion:file:VERSION]...原创 2018-04-11 10:01:00 · 2027 阅读 · 0 评论 -
centos的如何使用新版本的python
前提不能直接升级系统的python! 否则会导致不可意料的依赖问题,因为太多程序使用python了。建立用户自己的python版本第一步 安装virtualenvpip install virtualenv第二步 安装用户自己的python版本 下载新版本python 关键是prefix要指定用户特定的目录./configure --prefix ~...原创 2018-04-11 09:59:48 · 438 阅读 · 0 评论 -
python的import库自动排序
一般人的python文件的import都很乱。可以使用isort对你的python文件的import进行重新排序。 pip install isortisort xxx.py参见: https://pypi.python.org/pypi/isort原创 2018-04-11 09:39:55 · 3439 阅读 · 0 评论 -
python执行shell命令比较好的库(envoy)
envoy是比subprocess和os.system更好的库原创 2017-06-25 08:44:11 · 3101 阅读 · 1 评论 -
pypy确实要比我们平时用的python快
什么是pypypypy就是用python实现的python。 我们平时用的python,一般叫Cpython,是由C语言开发的python。 pypy的速度反而要快于我们现在使用的Cpython。原创 2017-06-25 23:26:19 · 4482 阅读 · 0 评论 -
代码文件的编码问题
souceinsight和其他编辑器混用出现的乱码SourceInsight和Sublime Text是大家比较主流的代码编辑器(或阅读器),有时混用时,会出现中文乱码的问题,这里就是要分析并解决它如何知道文件的编码使用下面这个python代码,就可以得到文件的编码方式,其中需要额外安装python的magic库原创 2017-06-25 23:31:12 · 604 阅读 · 0 评论 -
python为什么函数里的代码会比全局书写运行更快
最近有同事提了一个有意思的问题. “同一段代码”放在函数里运行要比直接书写运行的更快for i in xrange(10**8): pass今天查了资料,发现其实蛮有意思的. 其本质是局部变量的操作速度要快于全局变量. python代码运行之前会编译为字节码(.pyc),可以发现两段代码的差异就是局部变量和全局变量的差异,局部变量采用STORE_FAST的方式操作,全局变量只能采用ST原创 2017-09-18 11:35:42 · 833 阅读 · 0 评论 -
采用SWIG实现python调用C函数
背景关于python如何使用C的函数,有很多方法。 正好今天看mesos的架构设计,里面提到使用了SWIG来提供python的接口(mesos是c++开发的)。 (SWIG:A code generator for connecting C/C++ with other programming languages) 亲自实践了一把,可以介绍给大家学习资料http://www.swig.org/原创 2017-09-13 08:32:41 · 406 阅读 · 0 评论 -
python移植到arm的单板
注:下文的CSU是我们一个嵌入式单板的名称。1 前言作者的话:本人非常喜欢python,一直梦想可以移植到CSU中。但是python诞生之初并没有想到要应用在嵌入式领域,因此,python的交叉编译比较复杂。python的交叉编译花费了我一些时间进行摸索,这篇文章是在查阅了N多资料,进行了N多尝试后成功的,就在想彻底放弃的时候,NEVER GIVE UP的信念让我进行前进,而恰恰是原创 2017-09-22 09:05:55 · 13184 阅读 · 13 评论 -
如何在arm单板中压缩python
注:下文的CSU是我们单板的名称。1 前言平时开发时,采用NFS我认为是最方便的方式,但是,如果哪一天真要用python程序直接在CSU上跑,NFS明显是不现实的,因此,必须要研究如何将python挤进CSU里。2 方案思路思路1:采用专业打包工具,例如cx_Freeze;思路2:自己组建一个最小运行环境2.1 打包思路这种思路是将python程序变成可执行文件,并将用原创 2017-09-22 09:14:33 · 1597 阅读 · 2 评论 -
python的一些技术积累
Python同一段代码在函数运行快于直接运行的问题问题: 最近覃武提了一个有意思的问题: “同一段代码”放在函数里运行要比直接书写运行的更快。 如for i in xrange(10**8): pass原因: 今天查了资料,发现其实蛮有意思的其本质是 局部变量的操作速度要快于全局变量. python代码运行之前会编译为字节码(.pyc),可以发现两段代码的差异就是局部变量和全局变原创 2017-09-27 16:47:19 · 648 阅读 · 0 评论 -
python去除list中空字符串最快最简单的方法
去除列表中空字符串最快最简单的方法推荐采用:filter(None, your_list)具有比while '' in your_list: your_list.remove('')和your_list = [x for x in your_list if x != '']更快的速度filter的使用参考: https://docs.python.org/3/library/funct原创 2017-12-13 09:58:23 · 96904 阅读 · 10 评论 -
安全的eval操作
通过网络request返回的response,如果是列表之类的字符串。 很多人会通过eval来将字符串转为列表、字典等。但这是非常危险的! 因为,返回的如果是不可信、不受控的信息,例如返回“os.system(‘rm / -rf’)”,那eval就会执行格式化电脑的操作!官方给了解决方案import astast.literal_eval("{'muffin' : 'lolz', 'foo'原创 2017-12-13 10:14:30 · 1309 阅读 · 0 评论 -
一个好用的python测试框架(pytest)及其CI设置
背景我们有部分正式代码是采用python编写,这部分代码也是需要TDD的,因此,需要找到一个好用的测试框架。原创 2017-06-25 00:47:33 · 7625 阅读 · 0 评论