
python
文章平均质量分 92
程序猿-瑞瑞
大数据开发程序员~!欢迎关注共同进步!坚持不断学习给自己充电,但是同时保护好自己的头发哈哈哈
展开
-
python 异步编程:协程
yield关键字用于定义一个生成器(generator)函数。生成器是一种特殊的迭代器,它允许你逐个产生值,而不是一次性创建并返回一个包含所有值的列表。使用yield的函数在执行过程中可以多次yield值,每次yield都会返回一个值,并在下一次从该点继续执行。yield是 Python 中实现协程和异步编程的基础,特别是在 Python 3.3 之前,当时的asyncio库依赖于生成器来实现协程。在 Python 3.5 及以后版本中,引入了async和await语法,提供了更高级的异步编程能力,但。原创 2024-06-08 11:14:25 · 1205 阅读 · 0 评论 -
分布式任务队列系统 celery 进阶
app/task1.py 和 app/task2.py在上述示例中,通过合理的项目结构,将不同功能模块分离开来,使得代码更加清晰易维护。配置文件:定义了Celery的broker和backend设置。定义任务:创建了包含具体业务逻辑的异步函数,并用@task装饰器标记为可被调度执行的task.启动Worker:编写了用于启动celerey worker 的脚本,使其能够从消息队列拉取并执行相应操作.主程序调用:通过导入task 模块中的方法,实现对某些操作发起异步请求.原创 2024-06-05 19:12:31 · 834 阅读 · 0 评论 -
分布式任务队列系统 celery 原理及入门
在代码中定义 Celery 应用和需要异步执行的任务函数。例如创建# broker 为消息中间件配置,这里用的是redis# backend 为任务执行结果存储,也用的是redis# 通过装饰器指定任务执行单元,即消息接受后的处理函数@app.taskreturn f'原创 2024-05-31 18:42:23 · 2150 阅读 · 2 评论 -
python中的互斥锁、死锁、递归锁
Python中的互斥锁(Mutex,Mutual Exclusion)是一种同步原语,用于防止多个线程同时访问共享资源。在Python中,互斥锁通常是通过threading模块中的Lock类来实现的。原创 2024-05-29 19:11:50 · 1427 阅读 · 0 评论 -
python中的多进程为什么比多线程常见-全局解释器锁
'counter''counter'从输出结果我们可以看到,在没有适当锁机制保护下,最终计数器值经常会得到正确的0。这是因为在CPython中,由于全局解释器锁(GIL)的存在,任何时候只有一个线程可以执行Python字节码。这意味着即使没有锁,也不会有两个线程同时执行全局变量的递增或递减操作。原创 2024-04-30 19:06:29 · 602 阅读 · 0 评论 -
python中的线程间通信
前面学习了线程的一些基本知识如与进程的区别,线程的组成,线程如何创建等,接下来继续线程的学习。原创 2024-04-28 19:05:10 · 3517 阅读 · 2 评论 -
python中的进程间通信
在Python中,进程之间默认是不共享内存的。每个进程都有自己独立的内存空间,这意味着在一个进程中对数据的修改不会影响到另一个进程中的同名数据。: Python 的: 进程可以通过读写文件或操作数据库来交换信息。这种方法相对简单但可能受到I/O性能限制。:如队列(Queue)和管道(Pipe),这些也是提供的功能。它们允许将消息从一个进程传递到另一个,虽然严格意义上不是共享内存,但它们是进行数据交换和任务协调非常有效的手段。下面是一个简单示例代码说明,在不使用Value的情况下。原创 2024-04-25 19:10:58 · 1651 阅读 · 1 评论 -
python中的锁
在深入探讨锁的机制之前,让我们通过一个生动的实例来引入这一概念。本文将通过模拟一个简单的车票购买系统,阐释锁在多进程环境中的重要性。原创 2024-04-24 18:58:16 · 1085 阅读 · 0 评论 -
python中的字典(dict)排序
在Python中,字典(dict)本身是无序的,直到Python 3.7版本,字典在迭代时会保持插入顺序。如果你需要根据键(key)或值(value)对字典中的项进行排序,可以使用内置的sorted()函数,它返回一个排序后的列表。原创 2024-04-19 19:08:35 · 3699 阅读 · 0 评论 -
python中的守护进程、僵尸进程、孤儿进程
孤儿进程(Orphan Process)是指在Unix-like系统中,父进程在其子进程结束之前退出或终止了,而这些子进程还在运行的情况。当父进程终止后,所有未终止的子进程将被init进程(PID为1的特殊系统进程)接管。守护进程(Daemon Process)是一种在后台运行的特殊类型的进程,它独立于控制终端,并且周期性地执行某种任务或等待处理某些事件。在操作系统中,僵尸进程(Zombie Process)是指已经完成执行(终止)但仍然有一个记录存在进程表中的进程。但是并不会造成真正的僵尸进程的出现。原创 2024-04-18 19:15:13 · 1445 阅读 · 0 评论 -
python中的并发编程-进程、线程2
在实际编程中,应该尽量确保程序能够处理所有可能导致退出的情况,并在退出前进行必要的清理工作,如保存状态、释放资源等。例如,操作系统可能会实施内存限制,当进程尝试分配超过限制的内存时,操作系统会终止该进程。在多进程程序中,如果父进程结束,子进程可能会成为孤儿进程,并被操作系统接管。多进程的使用过程中, 如果没有正常的结束进程,则可能会产生僵尸进程或孤儿进程的, 我们下一篇再详细探讨。在多进程程序中,如果所有子进程都结束了,父进程可能会随之结束。这些进程会尝试回收子进程的资源,但可能会导致子进程的异常退出。原创 2024-04-17 19:20:54 · 1355 阅读 · 0 评论 -
python中的设计模式:单例模式
设计模式的确切数量并没有一个统一的标准,因为不同的资料和文献可能会对设计模式的定义和分类有所不同。然而,最常见的设计模式集合是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides这四位作者在他们的著作《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)中提出的23种模式。:提供了对象创建的机制,能够增加已有代码的灵活性和可重用性。原创 2024-04-16 19:03:30 · 1353 阅读 · 0 评论 -
python中的并发编程-进程、线程
线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。它们在同一个进程内共享内存和资源,这使得线程之间的创建、销毁、通信和数据共享更加高效。线程的上下文切换通常比进程的上下文切换更快,因为线程共享大部分进程资源,如文件描述符、全局变量等,不需要切换完整的内存空间。轻量级:线程的创建、销毁和切换的开销都比进程要小得多,因为线程共享所属进程的资源,不需要独立的地址空间。并发性:在多线程的环境下,多个线程可以并发执行,提高了程序的执行效率和响应速度。共享资源。原创 2024-04-09 18:41:50 · 932 阅读 · 0 评论 -
python中的pass关键字、断言、解包、__name__ =__main__的使用
在Python中,pass是一个空语句,它不做任何操作,只是用来占位或作为占位符使用。在Python中,有时候需要保持语法完整性,但又不需要执行任何操作,这时可以使用pass语句。以下是pass总之,pass语句在Python中是一个空语句,用于占位或作为占位符使用,使得代码保持语法完整性。原创 2024-04-08 18:57:49 · 1168 阅读 · 1 评论 -
python中的垃圾回收机制
Python中的垃圾回收(Garbage Collection,简称GC)机制是一个自动内存管理过程,它负责在对象不再被使用时释放内存资源。Python的垃圾回收主要依赖于引用计数(Reference Counting)来跟踪和回收不再使用的对象。除了引用计数,Python的垃圾回收器还包括一个循环检测器,用于检测并回收循环引用中涉及的对象。原创 2024-04-07 18:49:32 · 1060 阅读 · 0 评论 -
python中的元类
在Python中,一切皆对象,包括基本数据类型(如整数、字符串)、函数、模块等。每个对象都有一个类型来描述它是什么。类型不仅定义了对象可以进行哪些操作,还规定了对象占用的内存大小以及布局方式。自定义一个元类型主要涉及继承自type并重写其__new__或者__init__方法来控制如何创建或初始化新型态(即新建立一个class)。# 定义一个名为 Meta 的元素, 继承自 type# 这是一个类的类。print('__new__方法,创建一个类!不是实例!类名:', name)原创 2024-03-29 19:09:57 · 979 阅读 · 0 评论 -
python中的异常处理
使用自定义例外try:")原创 2024-03-28 19:11:36 · 751 阅读 · 0 评论 -
python中的反射
反射(Reflection)是编程语言中的一个特性,它允许程序在运行时检查、调用和修改它自己的结构和行为。这意味着程序可以在运行时访问类型信息,并且能够动态地创建对象、调用方法、访问字段和属性,甚至修改类定义。原创 2024-03-27 18:56:34 · 1648 阅读 · 0 评论 -
python中的装饰器
前面的面向对象特性文章中提到了一些装饰器,比如@property 、@abstractmethod等,本章就重点讨论介绍一下什么是装饰器,及常用的内置装饰器。原创 2024-03-25 19:18:02 · 781 阅读 · 0 评论 -
python中的面向对象特性
抽象是将复杂的现实问题简化的过程,它通过创建简化的模型来表示复杂的实体,这个模型只包含对于当前问题重要的信息。在面向对象编程中,抽象通常是通过定义类来实现的,类提供了一种方式来定义抽象数据类型,通过隐藏所有的实现细节,只暴露出有限的接口与外界交互。抽象类是一种不能被实例化的类,它通常用作其他类的基类,定义了一些抽象方法,子类需要实现这些抽象方法。Python通过抽象基类(Abstract Base Classes, ABCs)提供了对抽象的支持。使用abc模块可以创建抽象基类。原创 2024-03-21 19:17:44 · 710 阅读 · 0 评论 -
python中的类与对象
一个基本的类定义包括关键字class,后面跟着类名和冒号。在其下方缩进的代码块中,可以定义属性(变量)和方法(函数)。要使用一个类,你需要根据该类创建对象。每个对象都会有自己独立的属性集合。def __init__(self, value): # 特殊方法__init__用于初始化对象,构造器# 实例化对象print(obj)# 直接修改对象的属性print(obj)原创 2024-03-20 19:00:29 · 1468 阅读 · 0 评论 -
python中的excel操作
在Python中,处理Excel文件的常用模块有xlrdxlwt和openpyxl。原创 2024-03-19 19:09:22 · 784 阅读 · 2 评论 -
python中的常用模块
os和sys是Python标准库中两个非常重要的模块,它们提供了丰富的方法来与Python解释器以及操作系统交互。原创 2024-03-14 18:44:44 · 509 阅读 · 0 评论 -
python中的模块和包
在Python中,模块是一个包含Python定义和声明的文件。文件名就是模块名加上.py后缀。模块可以包含函数、类、变量定义以及可执行的代码。使用模块的主要目的之一是将相关的代码组织在一起以提高代码的可重用性、可维护性和命名空间管理。原创 2024-03-09 21:34:51 · 970 阅读 · 0 评论 -
python中的文件操作2
在Python中,遍历文件通常指的是逐行读取文件中的内容。这种方式对于处理大型文件特别有用,因为它不需要一次性将整个文件加载到内存中。原创 2024-03-06 19:21:13 · 1171 阅读 · 0 评论 -
python中的文件操作
在Python中,文件操作主要涉及打开、读取、写入和关闭文件。这是一门基础且重要的技能,因为它使得程序能够持久化数据,或者处理磁盘上的数据文件。Python提供了一个内建的open函数用于文件的打开,以及文件对象提供的方法用于读取和写入。原创 2024-03-04 20:06:29 · 1128 阅读 · 0 评论 -
python及编程范式
编程范式是一种基于特定的理论和原则来指导程序设计和开发风格的模型。它定义了编程语言的结构、风格、元素以及编写程序时应遵循的规则。不同的编程范式提供了不同视角来解决问题,影响着代码组织方式、执行流程以及如何表达程序逻辑。原创 2024-02-29 21:52:47 · 2383 阅读 · 0 评论 -
python中什么是推导式、lamda函数
推导式(Comprehensions)是Python中一种简洁、灵活且高效的构建容器对象(如列表、集合、字典)的方法。它们允许从一个或多个迭代器快速创建容器,同时可以在创建过程中应用条件筛选或执行某些操作。原创 2024-02-28 21:46:28 · 894 阅读 · 0 评论 -
python中的变量
对于immutable types (如int、str、tuple),function无法直接修改传入variable本身;任何“modification”都会创建新objects。对于mutable types (如list、dict、set),function可以直接对传入variable进行modification,并且这种modification会反映到外部variable上。原创 2024-02-27 22:06:16 · 727 阅读 · 2 评论 -
python中的函数
在Python中,函数是组织好的、可重用的代码块,用于执行一个特定任务。函数定义通常包括以下几个部分原创 2024-02-26 21:13:29 · 893 阅读 · 0 评论 -
python中的对象布尔值
Python 在布尔值判断方面与许多其他编程语言有一些独特之处。在 Python 中,几乎所有的对象都可以用于布尔上下文中(即用于条件判断),并遵循一些特定的规则。原创 2024-02-25 21:30:58 · 459 阅读 · 0 评论 -
python中集合(set)原理及其操作
为了保持操作效率,在达到某个阈值时,Python 会自动增加存储空间,并重新计算所有已存储对象的位置。当你向集合添加一个元素时,Python 会首先计算该元素的哈希值(hash value),这个值决定了该元素在内部数据结构中的存储位置。Python 中的集合(set)是一个无序的不重复元素序列。Python 中的集合(set)是基于哈希表实现的。由于 set 是无序的,因此无法确定哪个是“下一个”被删除的项。找出只存在于其中一个 set 中而不同时存在于两个 sets 中的所有项。原创 2024-02-25 10:58:51 · 1883 阅读 · 0 评论 -
python中元组(tuple)原理及其操作
这意味着你不能修改元组来添加、删除或更改其包含的列表(因为这会改变元组本身),但你可以修改该列表内部的内容。虽然你不能直接修改存储在元组内部的对象(如增加、删除对象),但如果这些对象自身是可变类型(如list),那么你可以更改存储在其中对象自身内部状态或内容。Python中的元组(Tuple)虽然是不可变序列,但支持多种操作,主要包括索引、切片、连接、重复以及一些内置函数的使用。Python中的元组(Tuple)是一种不可变的序列类型,这意味着一旦创建了元组,就不能修改其内容。这在需要复合键时非常有用。原创 2024-02-23 20:37:00 · 1414 阅读 · 0 评论 -
python中字典(dict)原理及其操作
例如,Python的字典可以包含各种类型的键,包括不可变类型(如整数和元组)和可变类型(如列表),而JSON的键必须是字符串。从3.7版本开始,这一特性成为了Python语言的官方规范的一部分,因此在所有遵循该规范的Python实现中,字典都是有序的。但是,通过使用良好的哈希函数和动态调整哈希表的大小,Python尽量保证字典操作的高效性。:当字典中的元素数量增加,导致装载因子(存储的元素数量与哈希表大小的比值)超过某个阈值时,Python会增加哈希表的大小并重新哈希所有的键。原创 2024-02-22 20:46:26 · 1359 阅读 · 0 评论 -
python基础入门介绍
Python是一种高级编程语言,由Guido van Rossum于1989年底发明,并在1991年首次发布。它是一种解释型语言,具有动态类型系统和自动内存管理功能。Python的设计哲学强调代码的可读性和简洁性,其语法允许程序员用更少的代码行来表达想法,与其他编程语言相比,Python使得程序开发更加快速和高效。Python支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。它具有一个庞大而全面的标准库,这意味着用Python可以轻松完成各种任务,从网页开发到数据分析再到机器学习等。原创 2024-02-22 20:42:52 · 355 阅读 · 0 评论 -
python中列表(list)原理及其操作
在Python中,列表(List)是一种基本的数据结构,它是一个有序的集合,可以包含重复的元素,并且能够存储不同类型的数据项(例如,整数、字符串、甚至其他列表)。列表是可变的(Mutable),这意味着你可以在创建列表后修改它的内容。列表是Python中非常重要且功能强大的数据结构,支持多种操作,包括迭代、排序和嵌套等。正确使用列表可以使得代码更加简洁、高效。原创 2024-02-21 22:05:44 · 1553 阅读 · 0 评论 -
python对象池&字符串操作
Python的小整数池(Small Integer Pool)是一种内存优化策略,用于管理在程序运行过程中频繁使用的小整数。这个机制是Python解释器(特别是CPython实现)的一部分,旨在减少因创建和销毁常用整数对象而产生的内存分配和回收开销。原创 2024-02-08 11:49:55 · 964 阅读 · 0 评论