前言
编程需要纠结字体跟皮肤吗?肯定要纠结的啦= = = =
调理字体跟皮肤,就跟打扮房间一样。每当打开编程软件之时,要是看到清亮的字体,爽快的皮肤,心里肯定就特别踏实,码码起来肯定也就特别舒服。
是时候分享一下我的编程字体以及主题设置了!!!
前段时间,我和我的领导回到了母校,和我的师父师母聚餐。聚餐点了很多东西,大碗宽面,牛肉炒饭,韩国烤肉,吃都吃不完。虽然我的领导最近长得比以前p了些,但是吃饭速度还是慢悠悠。唉,要是我的领导能有个三头六臂,每个手都夹菜,每个头都去啃,那吃饭速度可就蹭蹭地涨上去了啊!
人无法三头六臂,但在Python里,我们可以做到。
要想实现三头六臂的效率,不走单一顺序流,我们不仅需要让多个任务能够并发(Concurrent),还能够并行(Parallel)运作。
假使吃饭吃到一半,人有三急,摘花回来继续用膳,那么如果把“吃饭”与“解手”当作两个任务,那么它们便是便是并发运作,但不并行。如果太追求效率,蹲坑恰饭,那便即是并发,也是并行了。
在Python中,我们可以用三种方式实现并发。但是并不是所有的方法,都支持并行。
这三种方法是:
最近一直在探索Lua的C API编程部分,上次实现了一个函数执行时间统计库:lfunctimer,这次就果断写了一个lnodelist来玩玩。在这期间,遇到了许多纠结的问题,因此果断做下分享~
测试用例现在贼少= =想要试用的同学可以走lnodelist的Github传送门,或者luarocks install lnodelist,就可以开始干起~
在Lua里,table充当着array以及hashmap两个角色,提供了简单的insert、remove、concat等功能。lnodelist则是独立于table之外建立一个崭新的list/array数据结构,暂时是一个双向链表。API的需求上,则兼并java的LinkedList跟js的array两种体系,列表如下:
数据挖掘(Data Mining),一般指从海量抓取的数据中经过一定的数据处理、算法,从而提取出有价值的信息的过程。它大体基于统计学、机器学习(Machine Learning)等原理,辅佐了人类的信息处理工作,为人工智能(AI)铺下道路。
幸运的是,似乎正是因数据挖掘而生的那样,Python社区中有各种数据挖掘相关的package,能够满足各种数据处理与算法模型构建需求。我们只需要pip/conda install 包名,然后查查api文档,熬几十行代码,就能玩一玩数据挖掘。
为此,在这一话,我们以自然语言处理(NLP)的文本分类(Text Classification)为例,设计一个最simple的,最old school的,以Python为例的,从数据获取到产生数据挖掘结果的流程。
昨天更新了一下lfunctimer,主要把hook更改为c api的形式,并且初步加了util和config的扩展
想要试用的同学的话可以点击上面clone下来,或者安装luarocks后执行下面命令安装~
luarocks install --server=http://luarocks.org/manifests/utmhikari lfunctimer
言归正传,利用lua原生的c api做debug相关操作会比lua自带的debug.getinfo来的快许多,我们可以来一探究竟
我们可以从官方下载源码搜索debug.getinfo的实现,此处以版本5.3.5为例。
debug.getinfo对应的源码是ldblib.c的db_getinfo函数,我们可以简单在ldblib.c的末尾中查到~
一直以来,爬虫都是许多同学学Python的目的之一,就连我敬爱的领导,也经常不耻下问一些爬虫方面的问题。因此,我们开始实战——以豆瓣Top 250为例,试水一下基础的爬虫。
“玩转豆瓣二百五”系列分为上下两部,所有代码,可以在我的Github里Douban_250找到~
工欲善其事,必先利其器。以下浏览器操作,都基于最新版Chrome~
爬虫爬虫,实质还是抓取网络数据= =爬虫不得急,可要一步步来——首先,我们希望获得每一个电影的链接,把它们存起来,留着后续爬取具体内容备用。
打开豆瓣Top 250首页,会看到电影列表的页面,往下翻,会看到总共有10页,每页25个电影。打开第二页,可以看到浏览器的地址变成了https://movie.douban.com/top250?start=25&filter=,咱们观察一下链接——链接有一部分,start=25,是不是很突兀?按这样推算,第三页应该是start=50,第一页就是start=0嘛= =试了一下,果真是的= =
因此,爬取250个电影链接,不难规划。具体如下: