• Python Virtualenv 介绍

    Posted by : lon.y@qq.com on 2017年7月4日

    动态语言Ruby、Python都有自己的虚拟环境,虚拟环境是程序执行时的独立执行环境,在同一台服务器中可以创建不同的虚拟环境供不同的系统使用,项目之间的运行环境保持独立性而相互不受影响。例如项目A在基于Python2的环境中运行,而项目B可以在基于Python3的环境中运行。Python通virtualenv工具管理虚拟环境。 安装 virtualenv $ pip install virtualenv 使用方法 $ cd my_project_folde

    阅读全文...

  • sqlalchemy 入门(下)

    Posted by : lon.y@qq.com on 2017年7月4日

    建议从这里下载这篇文章对应的.ipynb文件和相关资源。这样你就能在Jupyter中边阅读,边测试文中的代码。 说明 接sqlalchemy 入门(上),这篇会更详细的讲解和演示如果用SQLAlchemy完成Select, Update, Delete的操作。 准备 实验准备内容和sqlalchemy 入门(上)的内容一致,这里不在重复多说。 from sqlalchemy import create_engine user = 'test' passwo

    阅读全文...

  • Python多线程鸡年不鸡肋

    Posted by : lon.y@qq.com on 2017年7月4日

    术业有专攻,如是而已 当初在刚学习python多线程时,上网搜索资料几乎都是一片倒的反应python没有真正意义上的多线程,python多线程就是鸡肋。当时不明所以,只是了解到python带有GIL解释器锁的概念,同一时刻只能有一个线程在运行,遇到IO操作才会释放切换。那么,python多线程是否真的很鸡肋呢?要解决这个疑惑,我想必须亲自动手测试。 经过对比python与java的多线程测试,我发现python多线程的效率确实不如java,但远还没有达到鸡

    阅读全文...

  • 【Multiprocessing系列】Process

    Posted by : lon.y@qq.com on 2017年7月4日

    利用multiprocessing.Process对象可以创建一个进程,该Process对象与Thread对象的用法相同,也有start(), run(), join()等方法。Process类适合简单的进程创建,如需资源共享可以结合multiprocessing.Queue使用;如果想要控制进程数量,则建议使用进程池Pool类。 Process介绍 构造方法: Process([group [, target [, name [, args [, kwa

    阅读全文...

  • Python协程

    Posted by : lon.y@qq.com on 2017年7月4日

    真正有知识的人的成长过程,就像麦穗的成长过程:麦穗空的时候,麦子长得很快,麦穗骄傲地高高昂起,但是,麦穗成熟饱满时,它们开始谦虚,垂下麦芒。 ——蒙田《蒙田随笔全集》 上篇论述了关于python多线程是否是鸡肋的问题,得到了一些网友的认可,当然也有一些不同意见,表示协程比多线程不知强多少,在协程面前多线程算是鸡肋。好吧,对此我也表示赞同,然而上篇我论述的观点不在于多线程与协程的比较,而是在于IO密集型程序中,多线程尚有用武之地。 对于协程,我表示其效率确非

    阅读全文...

  • 如何构建一个分布式爬虫:实战篇

    Posted by : lon.y@qq.com on 2017年7月4日

    本篇文章将是『如何构建一个分布式爬虫』系列文章的最后一篇,拟从实战角度来介绍如何构建一个稳健的分布式微博爬虫。这里我没敢谈高效,抓过微博数据的同学应该都知道微博的反爬虫能力,也知道微博数据抓取的瓶颈在哪里。我在知乎上看过一些同学的说法,把微博的数据抓取难度简单化了,我只能说,那是你太naive,没深入了解和长期抓取而已。 本文将会以PC端微博进行讲解,因为移动端微博数据不如PC短全面,而且抓取和解析难度都会小一些。文章比较长,由于篇幅所限,文章并没有列出所

    阅读全文...

  • Python 链式赋值的坑

    Posted by : lon.y@qq.com on 2017年7月4日

    在我们使用Python的过程中, 经常遇到赋值语句, 就像下面的那样: a = 3 b = 3 可能你会觉得我又要说什么变量赋值就是引用, 这么简单的知识就不讨论啦, 相信聪明的大家肯定都知道的, 我想讲的是链式赋值 先科普下什么是链式赋值: 链式赋值: 同时对几个变量进行赋值 例如: a = b = c = 3 好了, 现在正式进入正题: >>> s = [1, 2, 3, 4, 5, 6] >>> i = 0 >>> i = s[i] = 3 i 和

    阅读全文...

  • 代码这样写不止于优雅(Python 版)

    Posted by : lon.y@qq.com on 2017年7月4日

    Martin(Bob大叔)曾在《代码整洁之道》一书打趣地说:当你的代码在做 Code Review 时,审查者要是愤怒地吼道: “What the fuck is this shit?” “Dude, What the fuck!” 等言辞激烈的词语时,那说明你写的代码是 Bad Code,如果审查者只是漫不经心的吐出几个 “What the fuck?”, 那说明你写的是 Good Code。衡量代码质量的唯一标准就是每分钟骂出“WTF” 的频率。 一份

    阅读全文...

  • 如何编写一个拼写纠错器?

    Posted by : lon.y@qq.com on 2017年7月4日

    阅读全文...

  • python 协程 1:yield 10分钟入门

    Posted by : lon.y@qq.com on 2017年7月4日

    最近找到一本python好书《流畅的python》,是到现在为止看到的对python高级特性讲述最详细的一本。看了协程一章,做个读书笔记,加深印象。 协程定义 协程的底层架构是在pep342 中定义,并在python2.5 实现的。 python2.5 中,yield关键字可以在表达式中使用,而且生成器API中增加了 .send(value)方法。生成器可以使用.send(…)方法发送数据,发送的数据会成为生成器函数中yield表达式的值。 协程是指一个过

    阅读全文...