最近新需求来了,要给系统增加几个资源权限。尽量减少代码的改动和程序的复杂程度。所以还是使用装饰器比较科学之前用了一些登录验证的现成装饰器模块。然后仿写一些用户管理部分的权限装饰器。比如下面这种defpermission_required(permission):defdecorator(f):@wraps(f)defdecorated_function(*args,**kwargs):ifnotcurrent_user.can(permission):ab
系统 2019-09-27 17:55:30 2064
在Python中,装饰器的本质就是Python中的一个函数,其来源自Python面向对象。装饰器是在函数调用之上的修饰。这些修饰仅是当声明一个函数或方法的时候,才会被应用额外的调用。有点类似Java中的AOP(面向方面编程)。同时在设计模式中,还有装饰器模式,也即是:装饰器模式(DecoratorPattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。原则是:不修改被修饰函数的源代码,不修改被修饰函数的调用方式。装饰器的用途:引入日志增加计时
系统 2019-09-27 17:55:09 2064
调用科大讯飞语音听写,使用Python实现语音识别,将实时语音转换为文字。参考这篇[博客]()实现的录音,首先在官网下载了关于语音听写的SDK,然后在文件夹内新建了两个.py文件,分别是get_audio.py和iat_demo.py,并且新建了一个存放录音的文件夹audios,文件夹内存放录音文件input.wav,我的整个文件目录如下:asr_SDK(文件名)├─Readme.html├─audios│└─input.wav(存放音频)├─bin│├─
系统 2019-09-27 17:53:58 2064
源代码:defmain(w_face,w_body):return("我的身材:"+face(w_face)+body(w_body))#main('青青','子衿')print(main('青青','子衿'))defface(name):return(name+'脸蛋')defbody(name):return(name+'身材')报错:line2,inmainreturn("我的身材:"+face(w_face)+body(w_body))NameEr
系统 2019-09-27 17:53:43 2064
运行splash:控制台输入:dockerrun-p8050:8050scrapinghub/splash如果报错:重启Docker后再输入。
系统 2019-09-27 17:53:24 2064
OpenAIgym是强化学习最为流行的实验环境。某种程度上,其接口已经成为了标准。一方面,很多算法实现都是基于gym开发;另一方面,新的场景也会封装成gym接口。经过这样一层抽象,算法与实验环境充分解耦隔离,可以方便地自由组合。但gym是python的接口,如果想用C++实现强化学习算法,则无法直接与gym相接。一种方案是跨进程:一个进程运行python环境,另一个进程运行强化学习算法,与环境交互数据经过序列化和反序列化通过IPC进行通信。另一种是单进程方
系统 2019-09-27 17:53:18 2064
defsend_mail(to_mail,subject,data,filename=None):smtp_server='smtp.exmail.qq.com'from_mail=""mail_pass=""msg=MIMEMultipart()msg["From"]=from_mailmsg["To"]=','.join(to_mail)msg["Subject"]=Header(subject,'utf-8').encode()#构造htmld=da
系统 2019-09-27 17:53:10 2064
概述如今我也是使用Python写代码好多年了,但是我却很少关心GIL的内部机制,导致在写Python多线程程序的时候。今天我们就来看看CPython的源代码,探索一下GIL的源码,了解为什么Python里要存在这个GIL,过程中我会给出一些示例来帮助大家更好的理解GIL。GIL概览有如下代码:staticPyThread_type_lockinterpreter_lock=0;/*ThisistheGIL*/这行代码位于Python2.7源码ceval.c
系统 2019-09-27 17:52:42 2064
最近在自学python,又用python实现了一下BLAST。这次更新了打分函数如下,空位罚分改为-5,但不区分gapopen和gapextend。'''''@author:JiuYu'''defscore(a,b):#scoringfunctionscore=0lst=['AC','GT','CA','TG']ifa==b:score+=2elifa+binlst:score+=-5else:score+=-7returnscoredefBLAST(se
系统 2019-09-27 17:52:10 2064
缘由日常工作中经常遇到类似的问题:把某个服务器上的某些指定的表同步到另外一台服务器。类似需求用SSIS或者其他ETL工作很容易实现,比如用SSIS的话,就会会存在相当一部分反复的手工操作。建源的数据库信息,目标的数据库信息,如果是多个表,需要一个一个地拉source和target,然后一个一个地mapping,然后运行实现数据同步。然后很可能,这个workflow使用也就这么一次,就寿终正寝了,却一样要浪费时间去做这个ETL。快速数据同步实现于是在想,可不
系统 2019-09-27 17:52:07 2064