自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 [python]select+回调+事件循环获取html

#通过非阻塞io实现http请求# select + 回调 + 事件循环# 并发性高# 使用单线程import socketfrom urllib.parse import urlparsefrom selectors import DefaultSelector, EVENT_READ, EVENT_WRITEselector = DefaultSelector()#使用...

2018-09-24 12:36:31 650

原创 [python]socket发送http请求,非阻塞io的一个例子

#通过非阻塞io实现http请求import socketfrom urllib.parse import urlparse#使用非阻塞io完成http请求def get_url(url): #通过socket请求html url = urlparse(url) host = url.netloc path = url.path if pat...

2018-09-24 12:16:02 1011

原创 [python] IO 多路复用 (select、poll 和 epoll)

#1. epoll并不代表一定比select好# 在并发高的情况下,连接活跃度不是很高, epoll比select# 并发性不高,同时连接很活跃, select比epoll好

2018-09-23 22:53:38 357

原创 [python]并发、并行、同步、异步、阻塞、非阻塞概念解释

并发:是指一个时间段内,有几个程序在同一个cpu上运行,但是任意时刻只有一个程序在cpu上运行并行:是指任意时刻点上,有多个程序同时运行在多个cpu上同步:是指代码调用IO操作时,必须等待IO操作完成才返回的调用方式。异步:是指代码调用IO操作时,不必等IO操作完成就返回的调用方式阻塞:是指调用函数时候当前线程被挂起。非阻塞:是指调用函数时候当前线程不会被挂起,而是立即返回...

2018-09-23 22:01:09 1117

原创 [python]多进程的通信,介绍与使用

import timefrom multiprocessing import Process,Queue #要用multiprocessing下面的Queue才可以。同样这个也不能用于多线程通信#from queue import Queue #这个是用于多进程的,并不可以用 会报错# def producer(queue):# queue.put("a")# ...

2018-09-22 18:33:05 148

原创 [python]多进程介绍和使用

# import os# fork只能用于linux/unix中, fork会创建一个子进程# pid = os.fork()# print("bobby")# if pid == 0: #子进程pid是0# print('子进程 {} ,父进程是: {}.' .format(os.getpid(), os.getppid()))# else:# print('我是父进...

2018-09-22 17:45:48 144

原创 [python]多进程和多线程对比

import timefrom concurrent.futures import ThreadPoolExecutor, as_completedfrom concurrent.futures import ProcessPoolExecutor#多进程编程#耗cpu的操作,用多进程编程, 对于io操作来说, 使用多线程编程,进程切换代价要高于线程#1. 对于耗费cpu的操作,多进程...

2018-09-21 00:39:43 166

原创 [python]线程池concurrent.futures ThreadPoolExecutor

from concurrent.futures import ThreadPoolExecutor, as_completed, wait, FIRST_COMPLETEDfrom concurrent.futures import Futurefrom multiprocessing import Pool#未来对象,task的返回容器#线程池, 为什么要线程池设置数量线程与se...

2018-09-20 23:24:07 1575

原创 [python]线程同步问题Lock和Rlock

#gil global interpreter lock (cpython)#python中一个线程对应于c语言中的一个线程#gil使得同一个时刻只有一个线程在一个cpu上执行字节码, 无法将多个线程映射到多个cpu上执行#gil会根据执行的字节码行数以及时间片释放gil,gil在遇到io的操作时候主动释放# import dis# def add(a):# a = a+1...

2018-09-18 00:13:47 294

原创 [python]线程间同步通信condition锁

#线程间通信 共享变量import timeimport threadingfrom chapter11 import variables #可以创一个py文件来维护这个变量#from chapter11.variables import detail_url_list #不要这么写,如果多个文件访问的话,这里数据会同步不过来from threading import Condit...

2018-09-16 18:49:14 248

原创 [python]多线程类的实现,setDaemon守护线程,join阻塞

#对于io操作来说,多线程和多进程性能差别不大#1.通过Thread类实例化import timeimport threadingdef get_detail_html(url): print("get detail html started") time.sleep(2) print("get detail html end")def get_detai...

2018-09-16 17:54:45 196

原创 [python]线程GIL锁

#gil global interpreter lock (cpython)#python中一个线程对应于c语言中的一个线程#gil使得同一个时刻只有一个线程在一个cpu上执行字节码, 无法将多个线程映射到多个cpu上执行#gil会根据执行的字节码行数以及时间片释放gil,gil在遇到io的操作时候主动释放# import dis# def add(a):# a = a+1...

2018-09-16 17:27:04 144

转载 [python-appium]安卓7.0以上不能定位元素automationName="uiautomator2"

目录 Appium适配Android7.0以上版本 说明: 解决方案: <h2 id="Appium适配Android7.0以上版本">Appium适配Android7.0以上版本</h2>测试机型: 华为荣耀V9安卓版本: Android7.0appium版本: 1.65...

2018-09-16 15:40:39 9995 1

原创 【python】socket编程简单的例子

#socket_client.pyimport socketclient = socket.socket(socket.AF_INET,socket.SOCK_STREAM)client.connect(('127.0.0.1', 8000))while True: re_data = input() client.send(re_data.encode("utf8"))...

2018-09-16 15:37:12 261

原创 【python】生成器读取大文件

#500G, 特殊 一行def myreadlines(f, newline): buf = "" while True: while newline in buf: pos = buf.index(newline) yield buf[:pos] buf = buf[pos + len(newline):] chunk = f.rea...

2018-09-16 15:34:36 1538

原创 【python】迭代器协议iterable iterator

from collections.abc import Iteratorclass Company(object): def __init__(self, employee_list): self.employee = employee_list def __iter__(self): return MyIterator(self.employ...

2018-09-16 15:33:27 91

原创 【python】生成器实现斐波拉契

#生成器函数,函数里只要有yield关键字def gen_func(): yield 1 yield 2 yield 3def fib(index): if index <= 2: return 1 else: return fib(index-1) + fib(index-2)def fib2(index):...

2018-09-16 15:31:02 262

原创 【python】__new__和__init__的区别

class User: def __new__(cls, *args, **kwargs): print (" in new ") return super().__new__(cls) def __init__(self, name): print (" in init") passa = int()#new 是...

2018-09-10 23:47:46 86

原创 【python】属性描述符访问属性的顺序

from datetime import date, datetimeimport numbersclass IntField: #数据描述符 def __get__(self, instance, owner): return self.value def __set__(self, instance, value): if not ...

2018-09-10 23:40:13 261

原创 【python】__getattr__和 __getattribute__

#__getattr__, __getattribute__#__getattr__ 就是在查找不到属性的时候调用from datetime import dateclass User: def __init__(self,info={}): self.info = info def __getattr__(self, item): retu...

2018-09-10 21:59:59 626

原创 【python】定义带参数的装饰器,用装饰器限制函数的参数类型

import inspectdef type_assert(*ty_args, **ty_kwargs): def decorator(func): # A... func_sig = inspect.signature(func) bind_type = func_sig.bind_partial(*ty_args, **ty_kwar...

2018-09-08 14:35:32 385

原创 【python】Semaphore控制线程的数量

from functools import update_wrapper, wrapsdef my_decorator(func): @wraps(func) def wrap(*args, **kwargs): '''某功能包裹函数''' # 此处实现某种功能 # ... return func(*args...

2018-09-08 14:02:31 1728

原创 【python】使用装饰器,斐波那契数列,走楼梯问题

图1.jpg因为每次只能走1,2,3阶,所以,当一共5级台阶时,可以看成在走了4阶基础上再跨1阶 + 走了3阶基础上再跨2阶 + 走了2阶基础上再跨3阶。因此,对于n阶台阶,可以看成走了n-1阶基础上再跨1阶 + 走了n-2阶基础上再跨2阶 + 走了n-3阶基础上再跨3阶。即:f(n): f(n-1) + f(n-2) + f(n-3)def memo(fu...

2018-09-08 13:47:39 714

原创 【python】dict和set的实现原理和性能

from random import randintdef load_list_data(total_nums, target_nums): """ 从文件中读取数据,以list的方式返回 :param total_nums: 读取的数量 :param target_nums: 需要查询的数据的数量 """ all_data = [] ...

2018-09-08 11:39:30 981

原创 【python】set和frozenset

#set 集合 fronzenset (不可变集合) 无序, 不重复, 传入一个可迭代的对象# s = set('abcdee')# s = set(['a','b','c','d','e'])s = {'a','b', 'c'}# s = frozenset("abcde") #frozenset 可以作为dict的key,不可变,不能使用add或其他添加方法# print(s)#...

2018-09-08 10:45:44 106

原创 【python】dict的子类

#不建议继承list和dictclass Mydict(dict): def __setitem__(self, key, value): super().__setitem__(key, value*2)my_dict = Mydict(one=1)print(my_dict) #{'one': 1} 继承原声C语言实现的dict会不生效my...

2018-09-08 10:17:45 1805

原创 【python】dict的常用方法

d = { 'b1': {"company": "a1"}, "b2": {"company": "k2"}}d.clear()print(d) # {}# copy,返回浅拷贝new_d = d.copy()new_d['b1']['company'] = 'f1'print(d)print(new_d)======================...

2018-09-08 00:00:37 402

原创 【python】列表推导式

#用简介的方式去遍历可迭代对象生成需要格式的列表int_list = [1,2,3,4,5]qu_list = [item * item for item in int_list]print (type(qu_list))int_list = [1,2,-3,4,5]qu_list = [item if item > 0 else abs(item) for item in i...

2018-09-05 23:57:39 123

原创 【python】array、deque和list

#性能会更好# array, deque# 数组import array#array和list的一个重要区别, array只能存放指定的数据类型my_array = array.array("i")my_array.append(1)my_array.append("abc")...

2018-09-05 23:33:14 473

原创 【python】bisect处理序列,排序以及查找

import bisectfrom collections import deque#用来处理已排序的序列,用来维持已排序的序列, 升序#二分查找inter_list = deque()bisect.insort(inter_list, 3)bisect.insort(inter_list, 2)bisect.insort(inter_list, 5)bisect.insort(...

2018-09-05 23:11:14 410

原创 【python】序列操作,以及__getitem__

#模式[start:end:step]""" 其中,第一个数字start表示切片开始位置,默认为0; 第二个数字end表示切片截止(但不包含)位置(默认为列表长度); 第三个数字step表示切片的步长(默认为1)。 当start为0时可以省略,当end为列表长度时可以省略, 当step为1时可以省略,并且省略步长时可以同时省略最后一个冒号。 另外,...

2018-09-05 22:04:33 697

转载 Mac下Jupyter

原 Mac下Jupyter(即IPython-notebook)的搭建及使用 ...

2018-09-04 00:11:02 509

转载 Mac OS搭建Python开发环境

原 Mac OS搭建Python开发环境 ...

2018-09-04 00:07:58 173

原创 【python】通过方法名字的字符串调用方法

from lib1 import Circlefrom lib2 import Trianglefrom lib3 import Rectanglefrom operator import methodcallerdef get_area(shape, method_name = ['area', 'get_area', 'getArea']): #'area', 'get_area...

2018-09-03 23:09:01 1866 1

原创 【python】对象释放,弱引用weaker.ref

class A: def __del__(self): print("in__del__")>>> a = A()>>> a = Nonein__del__>>> f = A()>>> g = f>>> f = None>&a

2018-09-03 22:38:05 240

原创 【python】用描述符对实例属性做类型检查

class T: passt = T()t.__dict__['x'] = 'ooo' #等价于 t.x = 'ooo', 添加实例属性xprint(t.x)===============================oooclass Attr: def __init__(self, key, type_): self.key = ke...

2018-09-03 21:15:56 129

原创 【python】比较运算符重载,以及抽象基类

按时打算大声道

2018-09-03 21:15:35 365

原创 【python】使用property函数为类创建可管理属性fget\fset\fdel

import mathclass Circle: def __init__(self, radius): self.__radius = radius # 设置私有属性,不让用实例.__radius访问 def get_radius(self): return round(self.__radius, 1) def set_...

2018-09-02 16:58:53 866

原创 【python】让对象支持上下文管理

from sys import stdin, stdoutimport getpassimport telnetlibfrom collections import dequeclass TelnetClient: def __init__(self, host, port=23): self.host = host self.port = por...

2018-09-02 16:12:06 180

原创 【python】创建大量实例,关闭动态绑定节省内存__slots__

class Player1: def __init__(self, uid, name, level): self.uid = uid self.name = name self.level = levelclass Player2: __slots__ = ['uid', 'name', 'level'] ...

2018-09-02 15:50:04 271

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除