这两天又接到一个Bug:大家都抱怨待机唤醒的速度太慢。首先我们假定应用程序没有这么大的功力来影响系统,主要从驱动方面入手。当然主要是要找出是哪个模块在待机和唤醒时比较慢,有以前编译PM模块的经验这个问题变得很简单:在PM调用SetDevicePower设置各驱动的电源状态时计算一下实际花了多少时间。经统计发现NLED和AUDIO驱动都比较慢,花费300ms以上,而且AUDIO驱动在进D3和D4状态时都各花了300ms。经过与模块的维护者讨论发现AUDIO驱
系统 2019-08-12 01:31:46 2267
之前一篇文章里提到了利用Cython来编译Python,这次来讲一下如何用Cython给Python写扩展库。两种语言混合编程,其中最重要的是类型的传递。我们用一个简单的例子进行入门:这次的目标是用C语言写一个Numpy的加法和元素相乘模块。在本例中,Numpy的array被传入到C语言模块内,变成了二维数组。1.头文件main.h:#ifndef_MAIN_H#define_MAIN_Hvoidplus(double*a,double*b,double*
系统 2019-09-27 17:54:47 2266
我们直接用Requests、Selenium等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久而久之,爬虫框架就诞生了。利用框架我们可以不用再去关心某些功能的具体实现,只需要去关心爬取逻辑即可。有了它们,可以大大简化代码量,而且架构也会变得清晰,爬取效率也会高许多。所以如果对爬虫有一定基础,上手框架是一种好的选择。本
系统 2019-09-27 17:53:32 2266
Android提供了一套很方便的进行资源(语言)国际化机制,为了更好地支持多语言,很多工程的翻译往往会放到类似crowdin这样的平台上。资源是全了,但是还是会有一些问题。哪些问题以下使用一些语言进行举例。其中values为工程默认的资源。1.某语言的资源和某语言限定区域的资源之间。如values-fr-rCA存在于values-fr相同的字符串,这种表现最为严重。2.某语言的资源和默认的资源之间。values-fr存在与values相同的字符串,可能原因
系统 2019-09-27 17:52:56 2266
Python字符串转数字importbinasciis='test123456test'str_16=binascii.b2a_hex(s.encode('utf-8'))#字符串转16进制print(str_16)defbaseN(num,b):return((num==0)and"0")or\(baseN(num//b,b).lstrip("0")+"0123456789abcdefghijklmnopqrstuvwxyz"[num%b])num_10
系统 2019-09-27 17:52:40 2266
1.异常程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行,并且提示一些错误的信息,这就是异常我们在程序开发的时候,很难将所有的特殊情况都处理,通过异常捕获可以针对突发事件做集中处理,从而保证程序的健壮性和稳定性在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确)可以增加try来捕获异常try这个关键字来捕获异常try:尝试执行的代码except:出现错误的处理try:不能确定正确执行的代码num=int(input('请输入
系统 2019-09-27 17:52:11 2266
参数混合调用顺序用法:函数中参数顺序为:普通参数,收集参数,关键字参数,关键字收集参数,其顺序不能颠倒,颠倒会报错。普通参数、关键字参数可以有n个,对量没有具体要求,收集参数和关键字收集参数要么没有,要么有且只有一个。定义def函数名(普通参数,收集参数(*args),关键字参数,关键字收集参数(*args))语句块例子:
系统 2019-09-27 17:50:46 2266
使用socket实现tcp通信,需导入socket模块1、服务端主要步骤:(1)创建socket:socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)family:AF_INET,AF_INET6,AF_UNIX,AF_CAN,AF_PACKET,AF_RDStype:SOCK_STREAM,SOCK_DGRAM,SOCK_RAW,或者其他SOCK_*proto:一般使用默认值
系统 2019-09-27 17:48:40 2266
例1importosprint'Process(%s)start...'%os.getpid()pid=os.fork()ifpid==0:print'Iamchild(%s)andmyfatheris%s.'%(os.getpid(),os.getppid())else:print'I(%s)justcreatedachildprocess(%s).'%(os.getpid(),pid)加载os模块后,首先os.fork()函数生成一个子进程,返回值pi
系统 2019-09-27 17:48:17 2266
元组是不可变的Python对象序列。元组的序列就像列表。唯一的区别是,元组不能被改变,即元组是不可被修改。元组使用小括号,而列表使用方括号。创建一个元组很简单,只要把不同的逗号分隔值,可以把括号中的这些逗号来分隔每个值。例如:tup1=('physics','chemistry',1997,2000);tup2=(1,2,3,4,5);tup3="a","b","c","d";空的元组写为含有两对称括号:tup1=();要元组中包含一个值,必须有一个逗号,
系统 2019-09-27 17:46:50 2266