Python
wanhf11
无。
展开
-
python 内存管理和垃圾回收
内存池管理一切皆为引用(动态语言)常量和短字符串会缓存底层通过c的malloc和free进行内存分配和释放(对象大小大于256会在此分配),每一次malloc会分配256k如果请求分配的内存在1~256字节之间就使用自己的内存管理系统简单的python对象,例如数值、字符串、元组,采用的是深拷贝复杂python对象,dict、list等,浅拷贝回收不会立即free参考链接...原创 2018-05-11 13:31:09 · 249 阅读 · 0 评论 -
sqlalchemy 读写分离简单封装
源码#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2017/7/22 21:50# @Author : wanhongfei@bytedance.com# @Comment :# @File : db_util.py# @Software: PyCharmfrom sqlalchemy import creat原创 2017-07-23 18:39:02 · 3146 阅读 · 1 评论 -
python 线程、协程简单使用
python简单线程并发示例:import threadingimport timemutex = threading.Lock()def worker(num): time.sleep(1) mutex.acquire() print "this is ",num mutex.release()if __name__ == '__main__': for原创 2017-06-27 21:15:36 · 368 阅读 · 0 评论 -
Django object转json
def object2AttrDict(obj): res = {} for attr_name in dir(obj): try: attr = getattr(obj, attr_name) if callable(attr): # method con原创 2017-06-27 20:48:13 · 1787 阅读 · 0 评论 -
Python 对象知识实践
#!/usr/bin/python# -*- coding: UTF-8 -*-class People(object): hahaname = "abc" # 公开静态名称 _hahaage = 1 # 保护静态名称 __hahasex = "难" # 私有静态名称 # 构造函数 def __init__(self, name, age, sex):原创 2017-06-13 12:06:02 · 261 阅读 · 0 评论 -
爬虫模拟请求
# -*- coding: utf-8 -*-'''Created on 2015年8月13日@author: wwhhff11'''import urllib2import urllibimport gzipfrom StringIO import StringIOimport chardetfrom lxml import etreeimport cookielibclass原创 2016-03-06 09:28:26 · 507 阅读 · 0 评论 -
Scrapy 默认设置
BOT_NAME = ‘scrapybot’CLOSESPIDER_TIMEOUT = 0 CLOSESPIDER_PAGECOUNT = 0 CLOSESPIDER_ITEMCOUNT = 0 CLOSESPIDER_ERRORCOUNT = 0COMMANDS_MODULE = ”CONCURRENT_ITEMS = 100CONCURRENT_REQUESTS = 16 CONCURR原创 2016-04-10 09:37:09 · 952 阅读 · 0 评论 -
Python gevent模块
gevent是第三方库,通过greenlet实现协程,其基本思想是:当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。由于切换是在IO操作时自动完成,所以gevent需要修改Pyth转载 2016-06-30 10:50:45 · 3089 阅读 · 1 评论 -
Python 易犯错误
修改函数默认参数def fun(x=[],y=False): y=True x.append('hello') return x,yif __name__ == '__main__':# (['hello'], True) print fun()# (['hello', 'hello'], True) print fun()错误使用类变量一原创 2016-04-23 16:21:53 · 434 阅读 · 0 评论 -
Scrapy 加载动态数据(js、ajax)
# -*- coding:utf-8 -*-from scrapy.selector import Selectorfrom scrapy.spiders import Spiderfrom scrapy.http import Request,Responseimport jsonimport sysreload(sys)sys.setdefaultencoding('utf-8')'原创 2016-05-27 23:47:09 · 6908 阅读 · 1 评论 -
gevent和twisted对比
TwistedScrapy基于事件驱动(Twisted)在单线程同步模型中,任务按照顺序执行。如果某个任务因为I/O而阻塞,其他所有的任务都必须等待,直到它完成之后它们才能依次执行。这种明确的执行顺序和串行化处理的行为是很容易推断得出的。如果任务之间并没有互相依赖的关系,但仍然需要互相等待的话这就使得程序不必要的降低了运行速度。在多线程版本中,这3个任务分别在独立的线程中执行。这些线程由操作系统来管原创 2016-04-10 10:16:46 · 5152 阅读 · 3 评论 -
scrapy框架
**组件** Scrapy Engine 引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。 调度器(Scheduler) 调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。 下载器(Downloader) 下载器负责获取页面数据并提供给引擎,而后提供给spider。 Spiders原创 2016-03-04 10:54:28 · 858 阅读 · 0 评论 -
输出python模块依赖
#!/usr/bin/env python# encoding: utf-8# source: https://github.com/MrLYC/ycyc/blob/dev/tools/analysis_dependency.pyimport astimport importlibimport inspectclass Analysis(ast.NodeTransformer):转载 2016-03-11 13:20:39 · 1250 阅读 · 0 评论 -
redis cluster pipeline问题排查
问题背景:问题代码: r = StrictRedis('10.20.23.45', 3901) print r.get('7551A63C3F2C0EA261AAE2B509ABC782172FE56DF64F64B6CB0B355E5A9D9FB7:u_feed_lt_ad_type_show:0') print r.get('1803D8B45F7371F0D...原创 2018-05-21 16:16:06 · 1616 阅读 · 0 评论