
Python
文章平均质量分 74
公众号:码农富哥
在一线大厂工作的码农,我开了公众号:【码农富哥】,工作之余致力于分享编程,算法,服务端架构,计算机基础(MySQL, Linux,TCP/IP, Python)的原创知识文章,欢迎大家关注交流!
展开
-
Python 闭包和__call__详解及开发实践
背景最近在使用wtform做后台的表单验证时候,跟很多框架使用的方法一样,它是结合ORM的对象提供校验, wtform 默认提供了不少的校验器,但是有的字段需要自己编写一些业务相关的校验器。自定义的每个校验器的特点都是接受两个参数,form, field。所以我们自己自定义校验器,校验器都必须是可调用对象即可,即函数,对象方法,都可以的。比如function url_validate(form,...原创 2020-02-07 20:32:37 · 1176 阅读 · 0 评论 -
经典好文:一致性HASH算法详解,看不懂你打我
基本场景比如你有N个cache服务器(后面简称cache),那么如何将一个对象object映射到N个cache上呢,你很可能会采用类似下面的通用方法计算object的hash值,然后均匀的映射到到N个cache;求余算法: hash(object)%N一切都运行正常,再考虑如下的两种情况;1一个cache服务器m down掉了(在实际...原创 2020-02-07 20:52:01 · 1039 阅读 · 0 评论 -
正则表达式 特殊构造用法
问题: 查找不能有字符串abc的匹配正则表达式字符串结果r'a(?=bbb)'abbbar'abbb'abbbabbbpython 2.7 文档说明 https://docs.python.org/2/library/re.html(?=...)Matches if ... matches next, but doesn’t consume any o原创 2017-07-26 18:08:17 · 3532 阅读 · 0 评论 -
Python 多线程抓取图片效率实验
Python 多线程抓取图片效率实验import requestsimport urlparseimport osimport timeimport threadingimport Queuepath = '/home/lidongwei/scrapy/owan_img_urls.txt'#path = '/home/lidongwei/scrapy/cc.txt'fetch_img_原创 2016-02-19 16:22:58 · 1189 阅读 · 0 评论 -
Python 多线程|Queue队列|生产者消费者模式|
Queue队列Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。Queue是线程安全的,自带锁,使用的时候,不用对队列加锁操作。1. 将一个值放入队列中 q.get()调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,ge原创 2017-07-26 18:08:02 · 2951 阅读 · 0 评论 -
python多线程编程: 使用互斥锁同步线程
#!/usr/bin/env python# -*- coding: utf-8 -*-import time, threading# 假定这是你的银行存款:balance = 0muxlock = threading.Lock()def change_it(n): # 先存后取,结果应该为0: global balance balance = balanc原创 2017-07-26 18:08:05 · 467 阅读 · 0 评论 -
部署项目Nginx+Tornado+Supervisor
TornadoTornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的原创 2017-07-26 18:08:08 · 2416 阅读 · 0 评论 -
一致性HASH算法详解
基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;求余算法: hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m down 掉了(在实际应用中必原创 2017-07-26 18:08:10 · 1498 阅读 · 0 评论 -
Python 多线程锁详解
线程锁 Lock多线程和多进程最大的不同在于,多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响,而多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改,因此,线程之间共享数据最大的危险在于多个线程同时改一个变量,把内容给改乱了。先看一个没有加锁的操作balance = 0def change_it_without_lock(n): globa原创 2017-07-26 18:08:20 · 1904 阅读 · 0 评论 -
python nginx+uwsgi+WSGI 处理请求详解
请求从 Nginx 到 uwsgi 到 django 交互概览作为python web开发,我们首先要弄清楚,到底一个请求过来,发生了什么事,请求的传递是怎么样完成的,由nginx是怎么转发到uwsgi, uwsgi又是怎样把请求传给到我们的框架(django or falsk)由我们自己写的代码处理,返回数据给客户端的。因此我作了以下一个粗略的流程图:uwsgi 处理过程.png以下原创 2017-07-26 18:08:26 · 8874 阅读 · 2 评论 -
Python 线程池原理及实现
概述传统多线程方案会使用“即时创建, 即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。一个线程的运行时间可以分为3部分:线程的启动时间、线程体的运行时间和线程的销毁时间。在多线程处理的情景中,如果线程不能被重用,就意味着每次创建都需要经过启动、销毁和运行3个...原创 2017-07-26 18:08:38 · 21424 阅读 · 2 评论