自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

变成习惯

记下知识,记录自己

  • 博客(15)
  • 收藏
  • 关注

原创 39. 线程间通信

前面我们已经通过多个线程下载csv数据并转换为xml文件。在Python中由于全局解释器锁(GIL)的存在,多线程进行CPU密集型操作并不能提高执行效率,我们修改程序框架:使用多个DownloadThread线程进行下载(I/O);使用一个ConvertThread线程进行转换(CPU);下载线程把下载数据安全地传递给转换线程。要求:实现上面的程序框架。解决方案:使用标...

2020-01-31 16:40:07 141

原创 38. 使用多线程

例如,我们通过 https://intrinio.com/tutorial/web_api 这个网址提供的api获取股市信息的csv数据,现在要下载大量csv数据文件,并将其转换为xml文件。要求:使用多线程来提高下载并处理的效率。解决方案:使用标准库threading.Thread类创建多个线程,在每个线程中下载并转换一只csv数据。对于threading.Thread类:cla...

2020-01-31 16:37:47 195

原创 37. 通过实例方法名字的字符串调用方法

某项目中,代码使用了三个不同库中的图形类:Circle,Triangle,Rectangle,它们都有一个获取图形面积的接口(方法),但方法名字不同。要求:实现一个统一的获取面积的函数,使用各种方法名进行尝试,调用相应类的接口。解决方案:使用内置函数getattr(),通过名字获取方法对象,然后调用。使用标准库operator下的methodcaller()函数调用。对于...

2020-01-26 15:02:39 209

原创 36. 在环状数据结构中管理内存

在Python中,垃圾回收器通过引用计数来回收垃圾对象。但某些环状数据结果(树、图、双向链表等),存在对象间的循环引用,比如树的父节点引用子节点,子节点同时也引用父节点。如果同时del掉引用父子节点,两个对象不能被立即回收。要求:解决此类的内存管理问题。解决方案:使用标准库weakref.ref类,它可以创建一种能访问对象但不增加引用计数的对象。对于wekref模块:class w...

2020-01-26 15:01:41 264

原创 docker-compose部署es集群

通过docker-compose部署es集群。es最新版本:7.5.1mkdir -p /home/elfk/elasticsearch/configmkdir /home/elfk/elasticsearch/{data1,data2,data3}cd /home/elfkecho 'ELK_VERSION=7.5.1' > .envtree ..├── docke...

2020-01-21 18:03:47 6292

原创 docker stack部署elfk

通过docker stack部署elfk。elfk最新版本:7.5.1swarm集群(一个节点):manager 192.168.30.128mkdir -p /home/elfk/{elasticsearch,logstash,kibana,filebeat}/configmkdir /home/elfk/logstash/pipelinecd /home/elfkt...

2020-01-18 17:51:09 697

原创 docker-compose部署elfk

通过docker-compose部署elfk。elfk最新版本:7.5.1mkdir -p /home/elfk/{elasticsearch,logstash,kibana,filebeat}/configmkdir /home/elfk/elasticsearch/data /home/elfk/logstash/pipelinecd /home/elfkecho 'ELK_VE...

2020-01-15 18:12:14 972

原创 35. 使用描述符对实例属性做类型检查

例如,在某项目中,我们实现了一些类,并希望能像静态类型语言(C,C++,Java)那样对它们的实例属性做类型检查。p = Person()p.name = 'Bob' #必须是strp.age = 18 #必须是intp.height = 1.83 #必须是float要求:1. 可对实例属性指定类型;2. 赋予...

2020-01-11 18:11:35 210

原创 34. 让类支持比较操作

有时我们希望自定义类的实例之间可以使用逻辑运算符进行比较,我们自定义比较的行为。例如,有一个矩形的类,比较两个矩形的实例时,比较的是它们的面积。class Rectangle: def __init__(self, w, h): self.w = w self.h = h def area(self): return se...

2020-01-11 18:10:14 206

原创 33. 创建可管理的对象属性

在面向对象编程中,我们把方法(函数)看作对象的接口。直接访问对象的属性可能是不安全的,或导致设计上不够灵活,但是使用调用方法在形式上不如访问属性简洁。例如:circle.get_radius() #调用方法circle.set_radius(5.0) #繁circle.radius #访问属性circle.re...

2020-01-11 18:09:26 197

原创 32. 让对象支持上下文管理

例如,实现了一个telnet客户端的类TelnetClient,调用实例的connect()、login()、interact()方法启动客户端与服务器交互,交互完毕后调用cleanup()方法关闭已连接的socket,以及将操作历史记录写入文件并关闭。要求:让TelnetClient的实例支持上下文管理协议,从而替代手动调用connect()、cleanup()方法。解决方案:实现上下文管...

2020-01-07 18:30:23 186

原创 31. 为创建大量实例节省内存

例如,在某网络游戏中,定义了玩家类Player(id, name, level, ...)。每有一个在线玩家,在服务器程序内则有一个Player的实例,当在线人数很多时,将产生大量实例(如百万级)。要求:降低大量实例的内存开销。解决方案:定义类的__slots__属性,声明实例有哪些属性(关闭动态绑定)。对于类的__slots__属性:>>> class Play...

2020-01-07 18:29:28 176

原创 30. 派生不可变类型

自定义一种新类型的元组,对于传入的可迭代对象,只保留其中int类型且值大于0的元素,例如:IntTuple([1, -1, 'abc', 6, ['x', 'y'], 3]) => (1, 6, 3)要求:继承内置tuple类实现IntTuple类。解决方案:继承内置tuple类,并实现__new__()方法,在其中修改实例化行为。对于类的实例化:在创建类的实例时,会在调...

2020-01-07 18:28:29 150

原创 29. 读写excel文件

Excel是日常办公中使用最频繁的软件之一,其数据格式为xls、xlsx,是一种非常常用的电子表格。例如:姓名 语文 数学 英语李雷 95 99 96韩梅 98 100 93张峰 94 95 95...要求:使用Python读写excel,添加“总分”列,计算每人总分。解决方案:使用第三...

2020-01-02 20:56:26 340

原创 28. 构建xml文档

有时,我们需要将其他格式数据转换为xml,例如把书籍信息csv文件转换成xml:books.csv: 书名, 作者, 出版社, 价格 精通scrapy网络爬虫, 刘硕, 清华大学出版社, 46.00 ...books.xml:<Data> <Book> <书名>精通scrapy网络爬虫</书名>...

2020-01-02 20:55:20 196

空空如也

空空如也

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

TA关注的人

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