随笔分类 -  Python

摘要:Celery是Python中最流行的异步消息队列框架,支持RabbitMQ、Redis、ZoopKeeper等作为Broker,而对这些消息队列的抽象,都是通过Kombu实现的。Kombu实现了对AMQP transport和non-AMQP transports(Redis、Amazon SQS、 阅读全文
posted @ 2019-08-15 12:44 再见紫罗兰 阅读(3314) 评论(0) 推荐(0) 编辑
摘要:先从一道面试题开始: 给A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。 这个问题的本质在于判断一个元素是否在一个集合中。哈希表以O(1)的时间复杂度来查询元素,但付出了空间的代价。在这个大数据问题中,就算哈希表有100%的空间利用率,也 阅读全文
posted @ 2019-08-03 17:11 再见紫罗兰 阅读(2244) 评论(0) 推荐(0) 编辑
摘要:闭包是Python装饰器的基础。要理解闭包,先要了解Python中的变量作用域规则。 变量作用域规则 首先,在函数中是能访问全局变量的: >>> a = 'global var' >>> def foo(): print(a) >>> foo() global var 然后,在一个嵌套函数中,内层函 阅读全文
posted @ 2019-07-22 10:24 再见紫罗兰 阅读(7703) 评论(0) 推荐(4) 编辑
摘要:LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的。 现代操作系统提供了一种对主存的抽象概念虚拟内存,来对主存进行更好地管理。他将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在主存和磁盘之间来回传 阅读全文
posted @ 2019-05-26 18:44 再见紫罗兰 阅读(26877) 评论(0) 推荐(6) 编辑
摘要:在Python Web开发中,我们一般使用Flask、Django等web框架来开发应用程序,生产环境中将应用部署到Apache、Nginx等web服务器时,还需要uWSGI或者Gunicorn。一个完整的部署应该类似这样: 要弄清这些概念之间的关系,就需要先理解WSGI协议。 WSGI是什么 WS 阅读全文
posted @ 2019-05-01 16:38 再见紫罗兰 阅读(2244) 评论(0) 推荐(1) 编辑
摘要:LDAP(Light Directory Access Portocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP。 LDAP目录以树状的层次结构来存储数据。每个目录记录都有标识名(Distinguished Name,简称DN),用来读取单个记录,一般是这样的: 几个关键字的含义如 阅读全文
posted @ 2019-01-11 16:19 再见紫罗兰 阅读(21808) 评论(0) 推荐(1) 编辑
摘要:Python中进行并发编程一般使用threading和multiprocessing模块,不过大部分的并发编程任务都是派生一系列线程,从队列中收集资源,然后用队列收集结果。在这些任务中,往往需要生成线程池,concurrent.futures模块对threading和multiprocessing模 阅读全文
posted @ 2019-01-05 12:28 再见紫罗兰 阅读(9415) 评论(1) 推荐(0) 编辑
摘要:一般的的静态HTML页面可以使用requests等库直接抓取,但还有一部分比较复杂的动态页面,这些页面的DOM是动态生成的,有些还需要用户与其点击互动,这些页面只能使用真实的浏览器引擎动态解析,Selenium和Chrome Headless可以很好的达到这种目的。 Headless Chrome 阅读全文
posted @ 2019-01-04 17:16 再见紫罗兰 阅读(12788) 评论(1) 推荐(2) 编辑
摘要:又有时间写东西了,最近深感世事并不以人的美好愿望而改变,还是要以积极地心态来适应新变化,多多关心身边的人。 图钉画中一个图钉代表一个像素,所以关键在于像素渣化,降低分辨率,图钉的色彩有限,还需要降低图片的色彩数量,统计各种色彩的数量及位置。 以上都可以用Pillow完成,Pillow是Python中 阅读全文
posted @ 2018-08-13 00:09 再见紫罗兰 阅读(1880) 评论(1) 推荐(2) 编辑
摘要:Python的网络编程主要支持两种网络协议:TCP和UDP。这两种协议都通过叫Socket的编程抽象进行处理。Socket起源于Unix,是类似于文件的存在,可以像文件一样进行I/O、打开、关闭等操作,最主要的是它可以实现网络上不同主机的进程间通信,所以基本上Socket是任何一种网络通讯中最基础的 阅读全文
posted @ 2018-01-14 03:47 再见紫罗兰 阅读(1785) 评论(0) 推荐(2) 编辑
摘要:窗外下着小雨,作为单身程序员的我逛着逛着发现一篇好东西,来自知乎 你都用 Python 来做什么?的第一个高亮答案。 到上面去看了看,地址都是明文的,得,赶紧开始吧。 下载流式文件,requests库中请求的stream设为True就可以啦,文档在此。 先找一个视频地址试验一下: 遭遇当头一棒: 这 阅读全文
posted @ 2018-01-09 00:14 再见紫罗兰 阅读(69425) 评论(13) 推荐(12) 编辑
摘要:单线程与隔离性 Redis是使用单线程的方式来执行事务的,事务以串行的方式运行,也就是说Redis中单个命令的执行和事务的执行都是线程安全的,不会相互影响,具有隔离性。 在多线程编程中,对于共享资源的访问要十分的小心: 在不加锁的情况下,num是不能保持为1的。 而在Redis中,并发执行单个命令具 阅读全文
posted @ 2018-01-04 23:00 再见紫罗兰 阅读(1026) 评论(0) 推荐(0) 编辑
摘要:supervisor可以当做一个简单的进程启动、重启、控制工具使用,也可以作为一个进程监控框架使用,作为后者,需要使用supervisor的Events机制。 Event Listeners supervisor对子程序的监控通过叫做event listener的程序实现。supervisor控制的 阅读全文
posted @ 2017-12-27 18:41 再见紫罗兰 阅读(4236) 评论(2) 推荐(1) 编辑
摘要:Supervisor是用Python开发的一套client/server架构的进程管理程序,能做到开机启动,以daemon进程的方式运行程序,并可以监控进程状态等等。 linux进程管理方式有传统的rc.d、新兴的upstart、systemd等,与这些相比,Supervisor有着自己的特点。 便 阅读全文
posted @ 2017-12-22 23:23 再见紫罗兰 阅读(4998) 评论(0) 推荐(0) 编辑
摘要:要定时或者周期性的执行任务,可以使用linux的crontab。Celery也提供了类似的Periodic Tasks功能。 Celery beat Celery使用celery beat作为任务调度器,周期性的启动任务。 需要执行的任务默认是在beat_schedule配置选项中设置的。使用dja 阅读全文
posted @ 2017-12-21 22:13 再见紫罗兰 阅读(19761) 评论(0) 推荐(0) 编辑
摘要:Celery必须实例化后才可以使用,实例称之为application或者简称app。实例是线程安全的,多个Celery实例(不同的配置、部件和任务)都可以在一个进程空间中运行。 创建一个最简单的app: 上述的app是一个运行在__main__模块中的Celery实例。 Main Name Cele 阅读全文
posted @ 2017-12-19 21:26 再见紫罗兰 阅读(2843) 评论(0) 推荐(0) 编辑
摘要:元类 在 Python中,实例对象是由类生成的,而类本身也是可以被传递和自省的对象。那么类对象是用什么创建和生成的呢?答案是元类,元类就是一种知道如何创建和管理类的对象。 让我们回顾一个内置函数type(),type不仅可以返回对象的类型,而且可以使用类名称、基类元组、类主体定义的字典作为参数来创建 阅读全文
posted @ 2017-12-15 00:32 再见紫罗兰 阅读(991) 评论(0) 推荐(0) 编辑
摘要:类型检查 创建类的实例时,该实例的类型为类本身: 要测试实例是否属于某个类,可以使用type()内置函数: 当然,python中不建议如此检查,更好的办法是使用内置类型检查函数isinstance(obj, cls): 同样的,内置函数issubclass(cls1, cls2)可以用做子类的检查: 阅读全文
posted @ 2017-12-12 21:11 再见紫罗兰 阅读(855) 评论(0) 推荐(0) 编辑
摘要:inspect模块用于收集python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈,对对象进行类型检查等等,有几个好用的方法: getargspec(func) 返回一个命名元组ArgSpect(args, varargs, keywords, defaults),args是函数位置参数 阅读全文
posted @ 2017-12-06 00:05 再见紫罗兰 阅读(36315) 评论(0) 推荐(1) 编辑
摘要:Python中类调用__new__()类方法来创建实例,调用__init__()方法来初始化对象,对象的销毁则调用__del__()方法。 __new__()方法第一个参数为类cls,通常返回cls的一个实例,然后新实例的__init__()方法将以类似于__init__(self[, ...])的 阅读全文
posted @ 2017-12-04 22:59 再见紫罗兰 阅读(6025) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示