Python
文章平均质量分 79
tab_space
手指不是月亮,但可以指月亮~
展开
-
浅谈urllib2中内部调用流程
文章简要的描述了一下urllib2库中,由urllib2.open(url)发起后的内部调用流程。原创 2015-12-26 12:09:52 · 538 阅读 · 0 评论 -
Python中协程(Coroutine)的使用和注意点
0. 协程的优势在Lua中有协程,在Python里也有协程(Coroutine)。那为什么会需要协程,协程的好处有哪些?1. 分片计算(sliced calculating)我们可以把一个原本很复杂的计算分成若干断,每次算一小段,然后每次获得一小部分的结果。这样就会降低卡顿现象的出现概率。2. 手动暂停和恢复这个好处就是,有一些东西我可以做到一半,当需要其他函数支持的时候,可以原创 2016-07-11 22:36:20 · 5512 阅读 · 0 评论 -
Python的垃圾回收机制(一)之简介
0. 垃圾回收(GC)极简介本文介绍了在了解垃圾回收过程中遇到的几个名词定义,并且简要介绍了三种垃圾回收器:引用计数回收器,标记清除回收器和世代回收器。这篇给出个框架,有时间再去填(其实已经写过一遍,某种逗逼原因内容没了,有不情愿再复写一遍:( )。原创 2016-07-18 10:31:07 · 2197 阅读 · 1 评论 -
Python的垃圾回收机制(二)之内存模型
0. 背景之前介绍了Python垃圾回收的简介,它简要介绍了三种垃圾回收器:引用计数回收器,标记清除回收器和世代回收器,这里会给出Python中基础类型在C语言中的内存模型,以帮助我们理解下一节三种垃圾回收器结合使用流程。1. Python对象内存模型首先介绍一下Python对象的内存模型,如下图1所示: 图1. PyObject对象内存模型上图可以看到,一个PyObject必须包含ob_re原创 2016-08-27 12:16:56 · 4533 阅读 · 1 评论 -
Python实现Event回调机制
0.背景在游戏的UI中,往往会出现这样的情况:在某个战斗副本中获得了某个道具A,那么当进入主界面的时候,你会看到你的背包UI上有个小红点(意思是有新道具),点击进入背包后,发现新增了道具A,显示个数为1,并且在下个界面中有个使用的按钮由灰色不可使用变成橙色的可使用状态 图1. 事件触发说明图其中这里是由道具获得这个事件,触发了上述的三个行为。如果使用显示调用行为,会使得代码难扩展,易出错,逻辑原创 2016-08-12 09:57:23 · 11949 阅读 · 1 评论 -
Python的垃圾回收机制(三)之回收机制
0. 背景之前介绍了Python垃圾回收的简介和内存模型,这里会对前几篇提到的回收机制进行代码剖析。注意这里用到的术语,如有疑问移步(一)简介查看。1. 标记清除中的GCPython使用引用计数来管理对象的生命周期。但是问题来了,如何解决循环引用的问题?循环引用计数也好办,使用标记清除(Mark-and-Sweep)就可以解决。标记清除方法遵循垃圾检测和垃圾回收两个阶段,其简要工程如下:1). 寻找原创 2016-09-07 14:59:15 · 1508 阅读 · 0 评论 -
Python的垃圾回收机制(四)之回收流程源码剖析
0. 背景之前介绍了Python垃圾回收的简介,内存模型和回收机制,这里会详细讲述上一文回收机制中回收流程的具体实现。原创 2016-09-22 12:31:00 · 1557 阅读 · 0 评论 -
TensorFlow深度学习,一篇文章就够了
TensorFlow深度学习框架Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow。转载 2016-10-12 11:26:14 · 5724 阅读 · 1 评论 -
一起读 Gevent 源码
这一篇主要想跟大家分享一下 Gevent 实现的基础逻辑,也是有同学对这个很感兴趣,所以贴出来跟大家一起分享一下。1. Greenlet我们知道 Gevent是基于 Greenlet 实现的,greenlet 有的时候也被叫做微线程或者协程。其实 Greenlet 本身非常简单,其自身实现的功转载 2016-11-08 17:10:25 · 500 阅读 · 0 评论 -
自动安装Python第三方库
0. 背景近期策划提出一个关于策划表预处理的需求:将两个excel表通过某个规则进行合并。合并的规则并不是本文讨论的范围,故这里不作详述。但是不管如何,打开excel,获取某个sheet的单元格内容,Python无疑是最方便的语言工具,很快的,我就知道了相关的第三方库:openpyxl,官网:http://openpyxl.readthedocs.org。安装库有好几种方式:a) 使用pip或是ea原创 2016-06-07 13:14:39 · 1685 阅读 · 1 评论 -
简述Python中"_"的使用常识
0. 背景Python里面的下划线“_”使用频率明显比其他主流语言要多的多,而且在Python中,它也有自己独到的用处。本文主要简述:下划线在python中的使用常识。1. 单下划线-将名称封装到类中如果想将类中的“私有”数据封装到类的实例上,但是又需要考虑到Python缺乏对属性的访问控制问题。与其依赖语言特性来封装数据,Python程序员们更期望通过特定的命名规则来表达出对数据和方法的用途。原创 2016-05-08 12:42:23 · 3022 阅读 · 0 评论 -
Python类属性或实例属性的类型限制
0. 背景在Python的大量类属性或是实例属性中,由于python语法的特性,属性并不带有类型,可以随意赋值,当然了也可以通过@property用来限制某个属性,但是对于需要大量重用代码的情况下,描述符会更有用。使用描述符,与其说是类型限制,不如说是赋值时的类型检查。问题解决的目标是: 针对某个自定义的类,自定义有目标类型(比如Integer, String, Float)的类属性或是实原创 2016-05-29 22:55:01 · 7930 阅读 · 1 评论 -
Python import语义
在python中,import是一个非常重要的语句。每当我们需要一个模块时,会使用import,这也是python如此强大,如此方便的原因,但是在使用import时有三个问题需要铭记或注意。原创 2015-11-28 10:58:19 · 734 阅读 · 0 评论 -
python的单例模式与讨论
每种语言都有各自的单例模式,比如JAVA经典的懒汉,饿汉模式,或是double-check线程安全的单例模式等等。这里讲述两个比较好用的单例的python写法。原创 2016-01-24 01:58:13 · 1135 阅读 · 0 评论 -
深入思考python的super()
本文翻译自文章 《Python’s super() considered super!》,这篇文章是博主在王晓斌博客中,看到的博客Python面向对象_super()函数。翻译 2016-01-12 18:58:26 · 3792 阅读 · 1 评论 -
粗谈Python内置库itertools-chain与combinations
官方对 itertools 的定义是Functions creating iterators for efficient looping,定义了一系列的方法,能帮助我们创建能够进行高效遍历迭代的迭代器,里面包含不少有意思并且有用的方法,比如像chain, izip/izip_longest, combinations, ifilter等等。在这里简单拿几个方法为例,简单分析一下文档里面给出的等效的实转载 2016-03-04 15:23:59 · 1214 阅读 · 0 评论 -
简体中文转繁体的python简单实现
0. 背景代理的游戏是一个简体中文的版本,为了能使游戏成为一个拥有繁体中文的港澳台版本。其中的定制的简体中文(占绝大多数)是找台湾当地人翻译的,但是其中有一个语音识别的功能,由于是并非定制的内容,所以找了两个简体中文转繁体的简单实现。1. opencc-python如果目录上的链接被屏蔽了,请手动复制 https://pypi.python.org/pypi/opencc-python/ 首先介绍原创 2016-03-08 13:33:28 · 19001 阅读 · 4 评论 -
如何发布一个Python命令行工具
本文摘自无与童比简书《如何发布一个Python命令行工具》,以下为转载内容。本文简介上次写的一个终端里面斗鱼TV弹幕Python版本和Ruby版本,并且发布到PIP和RubyGems上面.在发布PIP包的时候,居然Google不到一篇可以非常好的讲解这个流程的文章.于是整理这篇文章,并且方便后来自己检索,并且方便他人找资料.自推荐下依照本文定制的命令行工具danmu.fm的github地址:http转载 2016-04-20 12:42:40 · 1697 阅读 · 1 评论 -
Python Types and Objects
0. 背景本文参考文章知乎回答,同时也安利大家去看看《Python Types and Objects》.1. 引子object和type的关系很像鸡和蛋的关系,先有object还是先有type没法说,obejct和type是共生的关系,必须同时出现的。在看下去之前,也要请先明白,在Python里面,所有的东西都是对象的概念。转载 2016-05-15 19:42:00 · 824 阅读 · 0 评论 -
使用Python的multiprocessing.connections实现远程方法调用(RPC)
0. 背景实现远程方法调用(RPC)的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。 下面我们将具体细化stub结构的实现。原创 2016-10-19 13:15:39 · 4394 阅读 · 0 评论