2015-10-18 Li Shuai
"可迭代对象"与"迭代器" Python中迭代器指的是实现了__iter__协议与next()方法的对象,其中__iter__协议中返回对象自身(self),next()方法每次返回单一元素,直至所有元素遍历结束,抛出'StopIteration'异常结束。 可迭代对象是一种更宽泛的定义,只要对象实现了__iter__协议,返回一个迭代器(并不像迭代器一样必须返回自身self)用来遍历自己的元素集合,那这个对象就是可迭代的对象,也意味着可以直接通过for item in obj...的方式遍历。 iter(a) is iter(a)? >>a = [1, 2, 3] >>iter(a) is iter(a) #(1) >>F 继续阅读 »
2020-05-27 geekspeng
忽略所有 Web性能基准测试,包括这个 几个月前,有一篇名为 Async Python is Not Faster 的文章在社交媒体上广为流传。在这篇文章中,作者 Cal Paterson 指出,与普遍的看法相反,异步 web 框架不仅“不比传统的同步框架快” ,而且还更慢。他通过展示他实施的相当完整的基准测试的结果来支持这一点。 我希望一切都像作者在他的博客文章中所说的那样简单,但是事实是,衡量Web应用程序的性能异常复杂,并且他在实施基准和对结果的解释上都犯了一些错误。 在本文中,你可以看到我在理解和修复此基准,重新运行该基准以及最终得出令人震惊的发现所做的努力。 继续阅读 »
2017-10-12 MoreFreeze
最近发现 airflow 任务执行顺序有些奇怪,于是看了下 airflow 关于权重的处理,解答了心中的疑问。 以最新的稳定版(v1.8-stable)为例,代码总共就这么一小段 python @property def priority_weight_total(self): return sum([ t.priority_weight for t in self.get_flat_relatives(upstream=False) ]) + self.priority_weight 继续阅读 »
2015-12-25 Golmic
在Scrapy框架下 more 蚂蜂窝 ```Python coding=utf-8 import json from urlparse import urljoin import re import logging import scrapy from scrapy.http import Request from scrapy.selector import Selector from andaman.utils.html import html2text, parse_time from andaman.items.qa import QAItem from andaman.items.jieban import Ji 继续阅读 »
2015-02-26 刘太华
上段时间组内解决的一个奇葩内存泄露问题, 找到最终原因时发现真是奇坑无比的一个原因. 一开始怀疑某个逻辑会导致dict引用数一直增加, 或是其他对象始终不释放, 导致内存一直在涨, 期间开启gc collect也没用. 使用memory grapher 等内存泄露工具检测, 打印出一段时间对象的增长量, dict, list等数据结构的增长量, 从打印信息看虽然有一定问题, 但是确实不可能会导致那么严重的内存泄露, 我们某个游戏服有时甚至会突然从300MB进程内存, 很快就上涨到3GB. 继续阅读 »
2016-06-06 Li Shuai
最不喜欢在Tornado中使用任何同步阻塞型的东西,不想让ioloop阻塞在某个IO调用上,因为单线程的东西任何阻塞都是代价很高的,除非你的数据库被优化的性能很好,速度很快。除了之前的线程池之外,直接使用异步库也是不错的选择,Motor就是Tornado里可以用的很好的异步库,它兼容Tornado的gen.coroutine式的异步调用形式,主要使用了greenlet来巧妙的封装PyMongo的同步API, 把底层的socketIO进行了异步化的处理,化同步为异步。 从使用的例子来分析Motor是如何把PyMongo的API异步化的: client = motor.MotorClient(...) db = client['te 继续阅读 »
2015-05-22 kk
物理主机为 windows 8.1,虚拟机 VirtualBox,里面装的 ubuntu。 windows 建立 ftp server 在 cmd 中输入以下命令,在当前目录建立 FTP 服务,需要先安装 python 及 pyftpdlib 模块(使用Python创建简单的HTTP和FTP服务)。 继续阅读 »
2017-01-10 安兴乐-siler
预备工作 (最好自带翻墙梯子) python工具包利器: Anaconda3(因为win下只出了python3.5版本的), 清华大学conda源 , 清华大学pipy源 , Pypi官方源 ,Conda官方源(其中一个发布源) ,最重要的就是Google了。 当我们下载好了Anaconda后,你懂的,直接安装,最好是写入系统的path中(注意提示,不要直接一路回车过去)。 在Linux中更是如此,不要使用sudo权限,否则会写入sudo 的路径中,以后使用的时候诸多麻烦的。安装好anaconda后,你应该有了virtualenv这个工具了,这个工具是用来创建虚拟环境的(一个系统往往有很多人在用,大家对系统的要求都不一样,你 继续阅读 »
2018-03-09 findneo
项目地址在 https://github.com/findneo/TKposts 人生活在社区里,对一个常使用微博的人来说,微博记录和反映了他在一段时间内所接触的信息,思考的问题和表达的观点,是值得研究的。如果这个研究对象是一个优秀的人,这里面的价值可能比想象要大。 很显然,要做成收集整理一个人所有的微博 这件事,首先是收集,其次是整理。 收集主要想到有三种方式: 找现成工具(无趣,暂不考虑)。 在https://m.weibo.cn/u/14015127xxx 页面一直按END 键,然后页面会不断异步发送请求以增加页面内容,直到全部内容都被获取。 可以看到第二种方法中的请求是向https://m.weibo.cn/ap 继续阅读 »
2017-06-27 Oliver Wang
好久不写博客了,最近一直在忙一个私活,一个问卷类的项目,用 django 写的,说实话,之前除了在公司厘米用,都没有用过 python,还好我有一些好同事,有问题可以直接问,方便了很多。 为了避免长时间不写文章的尴尬,我急匆匆的新键了一个 md,开始写。 一般来说,本地运行 django 项目是很简单, sh python manage.py runserver UWSGI 总感觉这个单词全部大写的话,很别扭,使用 uwsgi 启动项目的话也不是太难, ```ini docon.ini uwsgi abc.ini uwsgi --reload /tmp/***.pid uwsgi --stop /tmp/***. 继续阅读 »