Jun012019
May172019
Android UI性能测试——使用 Systrace 查找问题
一 官方文档翻译
官文地址:https://developer.android.com/studio/command-line/systrace
systrace命令允许您在系统级别上收集和检查所有运行在设备上的进程的耗时信息。它结合了来自Android内核的数据,例如CPU调度程序,磁盘活动和app线程,最后生成HTML报告,类似于图1中所示。
图1:systrace HTML示例报告,程序默认抓取5秒内应用和系统的消耗。该报告突出显示了systrace认为的异常帧...阅读全文
May162019
python apply_async子线程不执行的解决办法
如果传递给apply_async()的函数如果有参数,需要以元组的形式传递 并在最后一个参数后面加上 ,号,如果没有加, 号,提交到进程池的任务也是不会执行的
一个逗号引发的血案:
def save(url):
print url
for url in urls:
p.apply_async(save, args=(url,))#需要在参数后面添加逗号
另外,代码中如果有队列相关的操作时,也会引起子进程不执行的问题
阅读全文
May102019
Python3学习之路~10.1 多进程、进程间通信、进程池
一 多进程multiprocessing
multiprocessing is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency, effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessing module allows the programmer ...阅读全文
May102019
Python3学习之路~9.4 队列、生产者消费者模型
一 队列queue
当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用。
队列的作用:1.解耦,使程序直接实现松耦合 2.提高处理效率
列表与队列都是有顺序的,但是他们之间有一个很大的区别:从列表中取出一个数据,数据还在列表中,从队列中取出一个数据,队列中就减少一个数据。class queue.Queue(maxsize=0) #先入先出
class queue.LifoQueue(maxsize=0) #last in fisrt out...阅读全文
May102019
Python3学习之路~9.3 GIL、线程锁之Lock\Rlock\信号量、Event
一 Python GIL(Global Interpreter Lock) 全局解释器锁
如果一个主机是单核,此时同时启动10个线程,由于CPU执行了上下文的切换,让我们宏观上看上去它们是并行的,但实际上在微观上它们永远是串行的。如果一个主机有四核,代表它可以真真正正同时执行4个任务,而不是假象。但是在Python中,无论你有多少核,它永远都是假象,实际上它永远同一时间只能执行一个线程。这是Python在开发之初...阅读全文
May032019
Apr232019
Apr192019
Apr112019
解决Syntax Highlighting Error”错误的方法
在使用各种集成开发环境(IDE)时,我们经常会遇到“Syntax Highlighting Error”错误。这种错误会导致在代码编辑器中无法正确高亮显示代码的语法。这不仅会导致代码难以理解,也会给调试代码带来一定的困难。在本文中,我将介绍一些常见的解决这一问题的方法。
1. 检查文件格式
首先,我们需要确保我们正在编辑的文件的格式是正确的。一些IDE可能对于特定类型的文件有特殊的要求。如果你的...阅读全文