文章分类 - Python3
摘要:垃圾回收 现代的语言基本上都是自带垃圾收集器,简称GC. GC的优点在于可以自动的对程序中不再需要使用的资源进行回收,GC主要目的是节约计算机资源,防止内存泄露等. 熟悉Java的中高级开发者,一般都是比较了解一些常见java垃圾收集器的. JDK 版本 典型GC Oracle JDK7 CMS O
阅读全文
摘要:在讲Python 装饰器前,我先讲个Java语言的技术:AOP和注解。在Spring中我们有很多地方使用AOP,比如在数据库操作中建立切面并横切入事务逻辑,使一类无事务数据库操作变成有事务的操作,并且Spring中我们可以使用注解进一步的简化切面的位置声明,不再需要XML配置。总之是方便而且强大的功
阅读全文
摘要:concurrent concurrent 是Python的一个并发编程组件模块,不同于threading/multiprocessing这些多线程/多进程基础模型库,concurrent可能后续希望做出类似java JUC 一样的高级并发工具模型模块库 目前,concurrent下面还只有一个模块
阅读全文
摘要:https://juejin.im/post/5bf741886fb9a049fa0f671e # !/usr/bin/env python3 # -*- coding: utf-8 -* from sqlalchemy import Column, Integer, String from sql
阅读全文
摘要:sched sched 模块定义了一个实现通用事件调度程序的类。专用于计划任务的执行 目前sched的模型很简单,就一个相对延迟任务和一个绝对时间点任务 样例 # !/usr/bin/env python3 # -*- coding: utf-8 -* import sched import tim
阅读全文
摘要:Condition 条件变量总是与某种类型的锁对象相关联,锁对象可以通过传入获得,或者在缺省的情况下自动创建。当多个条件变量需要共享同一个锁时,传入一个锁很有用。 条件变量算是python变量里面非常全能的工具,传入的Lock是什么,你可以产生特定的线程同步条件,满足你的同步场景。 官方文档:htt
阅读全文
摘要:Semaphore 和栅栏一样,python借鉴java并发库的时候,也把信号量Semaphore带入进来。这是计算机科学史上最古老的同步原语之一,早期的荷兰科学家 Edsger W. Dijkstra 发明了它。 一个信号量管理一个内部计数器,该计数器因acquire()方法的调用而递减,因rel
阅读全文
摘要:Timer Timer 是threading模块里面的一个类,主要是做简单的定时任务。适用于设置一段时间后执行某一种逻辑的场景。更加专业的计划任务其实Timer不能胜任,应该是sched,不过一般场景我们使用Timer也够用 源码 class Timer(Thread): """Call a fun
阅读全文
摘要:Barrier Barrier 是栅栏的意思,也是python从java里面抄来的一个并发概念。直观的讲Barrier的主要作用就是做线程的并发执行数量限制。 我举个形象的例子:高铁站/飞机场安检入口,一个人可以想象成一个线程,每个人都有自己的事,安检口就是一个Barrier,它一次放10个人进去过
阅读全文
摘要:Queue Queue是Python标准库中的线程安全的队列实现,提供了一个适用于多线程编程的有序队列结构,用来在生产者和消费者线程之间的信息传递. 模块实现了三种类型的队列,它们的区别仅仅是条目取回的顺序。在FIFO队列中,先添加的任务先取回。在LIFO队列中,最近被添加的条目先取回(操作类似一个
阅读全文
摘要:contextlib 模块 contextlib 模块提供了3个对象:装饰器contextmanager、上下文管理器closing。使用这些对象,可以对已有的生成器函数或者对象进行包装,加入对上下文管理协议的支持,避免了专门编写上下文管理器来支持with语句。同时我们也是要函数ExitStack/
阅读全文
摘要:本文绝大部分来自于 https://www.ibm.com/developerworks/cn/opensource/os-cn-pythonwith/index.html 并做了细节的整理 With with语句是从Python2.5开始引入的一种与异常处理相关的功能,从2.6版本开始缺省可用。w
阅读全文
摘要:Event 事件用于协调线程间通信 python event用于主线程控制其他线程的执行,事件主要提供了三个方法wait、clear、set class Event: """Class implementing event objects. Events manage a flag that can
阅读全文
摘要:线程 进程,线程,协程 Python 线程受限于GIL,一个进程下多线程实际是串行交叉执行的,除非是高I/O场景,不建议使用 基本上python的并非模型上: 多进程+协程 是最优解 怎么开启多线程 python 提供一些模块供开发者快速写出多线程程序。这些模块主要是_thread 和threadi
阅读全文
摘要:Lock 受Java的启发,Python拿过来做锁 python lock是一个同步原语,状态是锁定或未锁定。两个方法acquire()和release() 用于加锁和释放锁 #!/usr/bin/env python3 # -*-coding:utf-8-*- from threading imp
阅读全文
摘要:python编程模型中的实例化逻辑 在面向对象编程模型中,基本上所有的计算机语言,对象都要经历这些过程:创建、初始化、使用、垃圾回收,不同的阶段由不同的方法负责执行。 对于Java而言, 对象的管理由JVM负责,不同的JVM采用了不同的思路来完成这个过程,单是垃圾回收器就有很多种;对于Python而
阅读全文
摘要:functools 概述 上一节,我们讲了python怎么实现函数的重载,使用的是functools里面的一个装饰器。现在我就functools做一个大概的全局介绍 整体 源码: """functools.py - Tools for working with functions and calla
阅读全文
摘要:函数的重载 在Java中,函数是有函数重载这个语言语法级功能的,因为Java是强类型语言,对于函数名相同,入参类型不同的功能高度一致的函数,就可以使用函数重载 Python是弱类型的语言,对函数的入参类型没有进行类型检查,也就没有函数重载这个概念。那么如果我们要做到类似于强类型语言的函数重载,应该怎
阅读全文

浙公网安备 33010602011771号