Python
文章平均质量分 67
I2Cbus
这个作者很懒,什么都没留下…
展开
-
为什么要学习Python
这个问题已经有很多人解答过了,自己在向别人介绍Python时,更多的时候也只能一个劲的说Python的开发效率如何如何的高效。但是对于还没有接触过Python的人来说,听得好像还是云里雾里的,更多的时候也只是将信将疑。这里只把个从的感想记录下来,希望自己的文字不是画蛇添足,对别人有些用处,能给那些寻求改变,希望学习Python的人一些动力,至于Python的威力,真的只能是自己在搞项目的时原创 2014-02-05 21:55:40 · 2323 阅读 · 1 评论 -
Kivy A to Z -- 如何实现焦点切换效果
Kivy是面向触屏设备的,对键盘,遥控器等输入设备的处理比较弱,但是有时候我们又需要实现对按键的处理,如通过方向键切换焦点,这篇文章来讨论下如何去实现。原创 2014-07-27 20:27:34 · 3236 阅读 · 0 评论 -
Kivy A to Z -- 如何从python代码中直接访问Android的Service
如何从python代码中直接访问Android的Service原创 2014-07-13 20:00:52 · 3736 阅读 · 0 评论 -
Kivy A to Z -- Kivy的消息处理机制
外面一直在下雨,比较无聊,顺便总结了下Kivy的消息的处理过程。总的来说,在Kivy里,处理的消息一共有四种:按键消息,鼠标消息,触屏消息,还有自定义消息。下面来看下整个消息的处理流程。 先来看张图: 先来解释下这几个类都是干嘛的:1、EventDispatcher:看名称就知道这是一个消息分发类,在这个类中通过了以下的主要方法:regist原创 2014-07-26 12:36:27 · 3895 阅读 · 0 评论 -
在用Kivy开发Python手机游戏时通过Plyer扩展访问Android传感器
如何在用Python开发手机游戏时访问传感器。翻译 2014-07-06 18:12:48 · 4934 阅读 · 0 评论 -
Kivy A to Z -- 如何从Python创建一个基于Binder的Service及如何从Java访问Python创建的Service
《Kivy A to Z -- 如何从python代码中直接访问Android的Service》 一文中讲到了如何从python访问java的service,这一篇再来讲下如何创建一个基于Binder的Python Service以及如何从Java代码中访问这个Python创建的Service。原创 2014-07-20 19:25:06 · 2145 阅读 · 0 评论 -
Kivy A to Z -- 监听网络的连接状态
while True: ss = select.select([self.s,],[],[],20)# print 'got something!!!!!:',ss data = self.s.recv(1024) for msg in data.split('\x00'):原创 2014-06-27 19:08:35 · 1662 阅读 · 0 评论 -
Kivy A to Z -- 如何在Kivy中获取SD卡或者U盘的插拔事件
Kivy只是一个图形库,在Android平台上,有很多功能需要自己扩展,原创 2014-06-26 19:41:32 · 2239 阅读 · 0 评论 -
从国际编码竞赛来看编程语言受众度
从国际编码竞赛来看编程语言受众度http://www.csdn.net/article/2014-04-22/2819437-PROGRAMMING-LANGUAGE-TRENDS转载 2014-04-27 09:35:34 · 1467 阅读 · 0 评论 -
Kivy A to Z -- Kivy的图形系统简介
Kivy的图形系统是建立在opengl之上的,原创 2014-08-03 16:33:26 · 2587 阅读 · 0 评论 -
Python 官方代码threading模块的一个死锁的bug
Python的threading模块有一个比较严重的bug:那就是可能会让线程的等待提前结束或者延迟,该篇文章分析了问题产生的原因和提出了相应的解决方法原创 2014-08-02 18:07:26 · 8683 阅读 · 1 评论 -
Kivy a to z -- Kivy的编译环境的搭建以及编译和运行
Kivy的编译环境的搭建以及编译和运行 Kivy的官网上已经为我们准备好了VirtualBox的虚拟机镜像,下下来后在Virtualbox中运行即可,无需再自己搭建环境。https://docs.google.com/uc?export=download&confirm=no_antivirus&id=0B1WO07-OL50_bTR0SElrLTZGWEU(注意:要访问上面的链接原创 2014-04-06 20:31:32 · 10388 阅读 · 5 评论 -
Python 代码精简和优化
Python很简单,容易使用,开发效率很高,移植性很好,代码资源也很丰富,被广泛使用。但是Python代码编出来的动态库比较大,python库很全,缺点就是库比较大。在内存占用方法,随着py库的引入,内存也成倍的增加,这里来讨论下如何来给Python瘦身,以及如何优化内存的占用。原创 2014-11-30 20:29:44 · 6820 阅读 · 0 评论 -
只有lua才能编译出小于200K的代码吗?NO! Python 也可以。
现在Python给人的感觉是大,东西多,在Windows上安装后居然要占100多兆的空间。lua给人的感觉是很小,很轻便。Python 2.7在linux下编译出来的代码在strip之后也有3M多,早期版本应该会更小些,但也应该有700K到800K吧。那么Python是不是不能编译出轻便,体积小的代码呢?答案是否定的,这里介绍几个Python的变种,来看下Python可以有多小。原创 2014-11-14 20:46:56 · 2765 阅读 · 0 评论 -
Python的运行机制--操作码(opcode)解析
上一篇文章《Python的运行机制--pyc文件浅析》中已经对Python的运行单元PyCodeObject结构体作了初步的了解,但是要真正理解Python的运行机制,还要通过分析Python的opcode才行。原创 2014-11-23 17:27:59 · 10569 阅读 · 0 评论 -
Python的运行机制--pyc文件格式浅析
Python的原始代码在运行前都会被先编译成字节码,并把编译的结果保存到一个一个的PyCodeObject中,pyc 文件即是把PyCodeObject从内存中以marshal格式保存到文件后的结果。本文通过测试和工具来了解下pyc文件到底有些什么东西。原创 2014-11-22 18:24:32 · 10646 阅读 · 3 评论 -
如何完全备份android系统上的system分区和data分区
安卓的系统备份在很多场合下可能会用到,下面这个python的脚本,可以用来备份整个的data分区:将所有data分区的文件和目录打包到data.zip,并生成recovery的专用edify脚本到update-script.sh。当然,简单的修改下脚本的备份路径就可以备份system分区了,如果再加上几行代码,就可以备份boot,recovery,uboot等等分区,不过这要根据不同的分区来写不同的备份代码原创 2014-08-17 12:22:11 · 12972 阅读 · 0 评论 -
Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具
来兴趣时写了些Kivy的代码,调试却总成感觉不是很方便。直接打包到public.mp3的方式太繁锁,用文件共享的软件又发现没有一个好用的,用samba filesharing本来也只是慢,但是更新的版本之后就一直提示说wifi没有tethering,意思是wifi热点没有打开,但是打开了还是提示没有tethering。找了个叫什么卓*力的文件管理器,下载了samba插件后输入用户名和密码死活不对,被搞得实在恼火,花了点时间写了个通过adb同步安卓文件的工具,用着也挺爽的。原创 2014-08-15 21:49:14 · 3912 阅读 · 0 评论 -
Kivy A to Z -- Kivycatalog例子无法在Android平台上运行及异常的解决方法
1. 在example/demo目录下的有一个很重要的示例:kivycatalog 2. kivycatalog显示了常用了控件的使用 3. 但是用编译出来的Kivy代码运行会出异常,下面讲下解决方法 4. 异常一:TypeError: show_keyboard() takes no arguments (2 given) 原因:这是因为show_keyboard是没原创 2014-04-20 20:35:43 · 3331 阅读 · 1 评论 -
Kivy A to Z -- 通过绑定进程运行CPU提高Python程序在多核CPU平台上的性能
1. 从Python GIL系列文章中我们已经对Python的GIL有了一个比较清醒的认识2. 要提高Python程序在多核CPU情况下的性能,除了使用进程替代线程外,一个更为实用的方法就是绑定Python进程运行于指定CPU。3. 接下来看下如何在Kivy中做到这一点4. 修改src/jni/application/python/start.c#define PY_SSIZE_T原创 2014-04-27 22:22:40 · 3864 阅读 · 0 评论 -
Kivy a to z -- 前言
1. 每个在用过其它语言的人在用过Python,或者用过Python后再用过其它类似C,C++的人都会惊叹于Python的效率 2. 是的,效率就是生命,提高效率就是延长生命。 3. 但是,实际上,现在很多的人(包括我自己在内),迫于生存的压力,都在将大量的时间从事着低效,重复的开发工作。 4. 然而,生命的意义在于创造,生命不创造,少创造就是在浪费生命。但是如原创 2014-04-04 23:08:24 · 5698 阅读 · 2 评论 -
Kivy A to Z -- 调试篇之在Android平台调试Python代码
调试篇之在Android平台调试Python代码 1. 在Android平台上要运行Python代码,必须将Python代码打包进public.mp32. 这给调试工作带来了极大的不方便。 3. 这里提供一种不用将代码打包成public.mp3即可调试的方法。4. 那么怎么实现呢?答案很简单,在Android上安装Samba Server。然后就可以在Windows上访问And原创 2014-04-14 20:16:49 · 3543 阅读 · 1 评论 -
Android进程分析
一天不写Python程序就感觉缺了点什么,写了个python程序来分析ps输出的结果,加深下理解import refrom collections import namedtupleprocess = namedtuple('process', 'user pid ppid vsize rss wchan pc unknown name')prog = re.com原创 2014-03-18 19:26:08 · 2051 阅读 · 0 评论 -
在Android平台用Python调用Java代码
发现一个在Android平台用Python调用Java代码的好工具--pyjnius,迫不急待的拿出来分享一下,对于我们这些pythonist来说真的是个好消息,试用了下,相当好用!!以后调试Java代码可以更加方便了!!后继准备写些相关的文档,先附上些介绍的链接http://pyjnius.readthedocs.org/en/latest/quickstar原创 2014-03-09 18:32:50 · 3384 阅读 · 0 评论 -
Common Language Extension(CLE) 介绍
真是林子大了什么都有啊,最近发现一个CLE的东东,可以支持各种编程语言之间的相互调用:http://www.srplab.com/index.html安卓版本支持Java调用Python代码,但是不支持Python调用Java代码,地址如下:http://code.google.com/p/cle-for-android/只可惜从2.0版本开始要付费了,真是逆历史潮流而动,不过有空原创 2014-03-16 20:20:03 · 7786 阅读 · 0 评论 -
人的一生什么最重要
人的一生什么最重要?我们用程序来算一算。以上程序设字母a=1,b=2,...,z=26,计算单词所代表的数字之和,会得到结果:knowledge = 96%workhard = 98%luck = 47%love = 54%money = 72%leadership原创 2014-03-07 20:55:40 · 1126 阅读 · 0 评论 -
一个hex文件与bin文件相互转换的python代码
这还是因为想移植uClinux到proteus下那个uClinux的例子而写的,可惜折腾来折腾去还是没折腾出来,看来是自己对ARM还是不够了解,继续努力了。网上流传的一个hex和bin文件转换的程序有64K代码的限制,因而自己写了个,就当是练练手了,python是个好东西哈import osimport sysfrom struct import *#hex to bindef hex_bin(h原创 2008-08-30 20:34:00 · 10578 阅读 · 1 评论 -
Python死锁问题查找
1 用Python写的程序,由于其GIL的存在,死锁的情况变得有点复杂。2 基本上可以分成两种情况:一种是在调用Thread.join,Queue.put,Queue.get,Rock.acquire这些函数造成的死锁,可以归结成Python代码层造成的死锁另一种情况是由于无法获取GIL而造成的死锁,可以归结成C代码层造成的死锁,具体原因是这样的:由于某个Python线程调用了一个原创 2014-02-05 20:28:48 · 7819 阅读 · 0 评论 -
Python内存泄漏问题查找
1 前言:1.1 像Java程序一样,虽然Python本身也有垃圾加收的功能,但是同样也会产生内存泄漏的问题1.2 在Python程序里,内存泄漏是由于一个长期持有的对象不断的往一个dict或者list对象里添加新的对象,1.3 而又没有即时释放,就会导致这些对象占用的内存越来越多,从而造成内存泄漏。1.4 另外,对象的交叉引用也会造成内存无法释放的问题。2 那么如果在Pyth原创 2014-02-28 20:18:03 · 27245 阅读 · 0 评论 -
Cython的学习方法
在认识Cython之前,我已经用swig写Python扩展好长一段时间了。 虽然用swig为写Python扩展提供了很大的方便,但是其易用性却仍然不是很好: 1、很多情况下要自己转换输入输出参数,如封装的一个C函数的参数中既是输入又是输出的情况,又如输入参数是一个结构体,而且结构体里的成员变量里又有指针,都必须自己写额外的代码去转换,而swig自定义的参数转换的方式原创 2014-04-15 22:25:36 · 14723 阅读 · 3 评论 -
Kivy a to z -- Kivy的编译过程-distribute.sh脚本分析
1 这一节重点来分析一下distribute.sh,以此来了解一下Kivy的整个编译过程2 在上一篇文章中,我们讲到编译的方法:./distribute.sh -m 'openssl pyjnius pil kivy'3 那整个过程是怎么进行的,下面来分析一下:4 首先来看下这个脚本文件的最后一行脚本:runfunction run() { check_build_dep原创 2014-04-06 20:39:50 · 3953 阅读 · 0 评论 -
一个古怪而又有用的python语法
我们在使用python的for语句时一般都是这样写的:for i in range(10): print i原创 2014-05-09 21:08:26 · 1489 阅读 · 0 评论 -
史上最简单的带流控功能的http server
import timeimport SimpleHTTPServerimport SocketServerBYTES_PER_SECOND=160*1024class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): """Serve a GET re原创 2014-05-09 20:38:27 · 2693 阅读 · 0 评论 -
Kivy A to Z -- Python Decorator的使用
Python装饰器的使用1. 在Design Patten中的一种设计模式叫Decorator,翻译成中文就是装饰器。 2. 在Python里也有类似的概念,例如 @staticmethod @classmethod @property 3. 它们用来装饰一个方法,以便以给方法添加额外的行为 4. 这节来分析一下Python里的decora原创 2014-04-07 19:01:54 · 1938 阅读 · 0 评论 -
Kivy A to Z -- Kivy的运行机制
Kivy的运行机制 See related topics and documents Kivy 学习笔记.mmap原创 2014-04-06 20:59:21 · 4475 阅读 · 1 评论 -
Kivy A to Z -- 给Kivy加上远程Python命令行调试功能
给Kivy加上远程Python命令行调试功能1. 首先从下面的连接下面代码: http://philpep.org/pub/ripshell.py 2. 重新生成public.mp3 建立一个public目录将下载下来的ripshell.py拷贝到该目录下,添加一个函数:def RunServer(): print 'Starting server原创 2014-04-06 22:00:46 · 2679 阅读 · 0 评论 -
Kivy A to Z -- Kivy模块的加载
1. 如果你看下各模块下的生成的文件,你会发现so文件都是空的,如pyjnius,jnius.so就是空的 2. 这就奇了怪了,根据我们的知识储备,如果是调用了import jnius,并且jnius不是一个py,pyo或者pyc文件的话,那么python就会从动态库里去找initjnius进行模块的初始化了。 3. 但是现在动态库是空了,这是什么情况? 4. 还记得dis原创 2014-04-06 21:53:58 · 2942 阅读 · 0 评论 -
Kivy A to Z -- Android apk的生成过程
1. 在《Kivy的编译环境的搭建以及编译和运行》一文中,我们通过以下命令生成apk文件:../../build/hostpython/Python-2.7.2/hostpython build.py --package org.test.touchtracer --name touchtracer --version 1.0 --dir ../../build/kivy/kivy-stabl原创 2014-04-06 21:49:22 · 7157 阅读 · 0 评论 -
在windows下安装python包管理器pip及使用
从来没有在Windows下用过pip,今天试了下,原来pip也可以在Windows下安装,的使用和linux下一样简单。先从下面的地址下载pip源码:http://pypi.python.org/pypi/pip/最新版本是6.0.8,下载连接为:http://pypi.python.org/packages/source/p/pip/pip-6.0原创 2015-02-06 23:13:10 · 18783 阅读 · 2 评论