自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python上下文管理器with深入讲解

Python编程时用到with上下文管理器的地方很多,但大多数人只知道怎么用却没有深入了解它。在此我尝试对Python上下文管理器with进行深入讲解,希望能帮到大家更好和更深入地掌握with的用法。with作用with语句是上下文管理器,上下文管理器(是一个对象)定义了在进入和退出with语句时需要执行上下文代码块。完整的上下文管理器必须有以下两个方法:object.__enter__(self)进入with语句块时会自动运行该对象的__enter__方法,如果有as子句那么with语句将将此方法

2021-01-23 21:51:53 503

原创 python少有人知的else用法

学过python的都知道if和else搭配使用,可还有几种else的用法少有人知,下面说说这几种少有人知的else用法。for和elsefor可以和else搭配使用,for循环代码块正常完成后执行else代码块,若在for循环代码块中执行了break那么else代码块不会被执行。代码案例:某果园有销售数据如下:sell_list = [ {'客户': '张三', '种类': '苹果','数量':100}, {'客户': '李四', '种类': '苹果','数量':200},

2021-01-19 19:19:43 181

原创 Python之高性能编程概述

本文是关于python高性能多任务编程的总结与概括。有很多细节没有详述,有需要了解更多的可以关注我,看看我前几期的文章。一、选择操作系统高性能编程需要选择合适的操作系统。因为windows下创建子进程是通过重新加载py程序文件;而linux和mac创建子进程是通过复制父进程的内存空间,所以在windows平台下运行多进程python程序的效率远不如在linux和mac平台下运行。二、分析任务类型高性能编程有三种方式:多进程,追求高运算:当任务类型是计算多IO少时,建议使用进程池的方式来编程。

2021-01-17 23:31:48 807

原创 python之协程概念和gevent使用注意事项及三个案例

协程基本概念协程本质就是一条线程,它能实现多个任务在一条线程上来回切换执行。使用协程可以在执行任务遇到IO时切换到别的任务继续执行,避免进入阻塞态,提高了CPU利用率。另外降低了操作系统负担。进程、线程、协程的区别进程线程协程操作系统资源分配的最小单位操作系统调度执行的最小单位操作系统不可见内存隔离内存共享内存共享数据不安全数据不安全数据安全开销大开销小开销极小发生IO时都能感知,由操作系统负责切换发生IO时都能感知,由操作系统负责切换

2021-01-15 21:07:53 915

原创 python编程之进程池、线程池详细梳理

进程/线程的创建过程进程/线程的创建过程在不同的操作系统有一定的差异,但总体上都是分这三步:创建或调度进程/线程,执行任务,切换或销毁进程/线程。其中创建进程时还需要分配资源;创建线程时不需要分配资源,因为线程使用父进程的资源。需要注意:创建和销毁进程/线程存在时间开销和内存开销,合理的进程/线程数量可以大大提高运行效率,超过运行环境承受能力的进程/线程数量反而会降低运行效率。而且进程/线程数量越多越容易产生内存泄露问题和内存碎片问题。进程/线程池的作用事先先开好多条进程/线程,有任务时直接使用它

2021-01-13 13:09:24 641

原创 python之多线程编程数据安全的queue模块详细梳理

queue模块是python官方自带模块,它实现了多生产者、多消费者队列,特别适用于在多线程间必须安全地交换消息的场合。queue模块实现了三种类型的队列,它们都是类,区别仅仅是消息的取回顺序。使用Queue类创建的是先进先出的队列(firt in first out,FIFO),使用LifoQueue类创建的是后进先出的队列(last in first out,LIFO),使用PriorityQueue类创建的是优先级队列。这三种队列内部使用了锁来阻塞竞争线程,即多个线程只能排队轮流使用队列,不能同时并

2021-01-10 16:20:23 1067 3

原创 python编程操作系统篇知识点详细梳理(下)

进程间数据共享进程间数据共享可以使用Manager类,但是要注意2点:修改数据时可能存在数据不安全的风险,为保证数据安全需要对修改操作加锁:未加锁的代码:from multiprocessing import Process,Managerdef change_dic(dic): dic['count'] -= 1if __name__ == "__main__": m = Manager() dic = m.dict() dic['count']

2021-01-09 16:42:46 303 3

原创 python编程操作系统篇知识点详细梳理(中)

锁(Lock)案例:假设有一个多进程的票务系统,多个用户使用它买票:抢票案例.py:import jsonimport timefrom multiprocessing import Processdef search(i): with open('ticket.txt',encoding='utf8') as f: ticket = json.load(f) print(f"{i}你好,当前余票是{ticket['count']}张。")de

2021-01-04 13:33:01 357

原创 python编程操作系统篇知识点详细梳理(上)

进程的概念:(Process)进程就是正在运行的程序,它是操作系统中资源分配的最小单位。资源分配:操作系统分配的CPU时间片、内存、磁盘空间端口等等资源。进程号(process identification)是操作系统分配给进程的唯一标识号,用户每打开一个进程操作系统都会为其创建PID。UID:用户id; PID:进程id; PPID:父进程id。在存储空间中未被执行的叫程序,被执行的叫进程(进行中的程序)。同一个程序执行两次之后是两个进程。进程和进程之间

2021-01-02 15:10:59 364 1

空空如也

空空如也

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

TA关注的人

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