合集-python高级

摘要:创建进程步骤 1. 导入进程包 import multiprocessing 2. 通过进程类创建进程对象 进程对象 = multiprocessing.Process() #是Process类 3. 启动进程执行任务 进程对象.start() 示例 1 # 1. 导入多进程模块 2 import 阅读全文
posted @ 2023-07-23 17:18 Allen_Hao 阅读(107) 评论(0) 推荐(0)
摘要:''' multiprocessing.Process 类是 multiprocessing 模块中用于创建和管理进程的主要类。它提供了一系列方法和属性,用于控制和监视进程的行为。 1. 创建 Process对象: 语法: p = Process(target=func, args=(args,), 阅读全文
posted @ 2023-07-23 17:28 Allen_Hao 阅读(284) 评论(0) 推荐(0)
摘要:说明 进程间除了主子进程共享数据,也可以通过进程间通信实现交互、数据共享 multiprocessing 提供了多种方式来实现进程间通信,如管道(Pipe)、队列(Queue)和共享内存(Value 和 Array)等。 通过这些机制,不同进程之间可以安全地共享数据或进行通信 进程间是不共享全局变量 阅读全文
posted @ 2023-07-23 17:48 Allen_Hao 阅读(307) 评论(0) 推荐(0)
摘要:''' multiprocessing 还提供了进程池(Pool)的功能,可以方便地管理一组工作进程。 进程池中的多个进程可以被重复使用,以执行多个任务,并在完成任务后自动回收进程。 ''' from multiprocessing import Pool def worker(x): return 阅读全文
posted @ 2023-07-23 17:59 Allen_Hao 阅读(88) 评论(0) 推荐(0)
摘要:锁 在multiprocessing模块中,可以使用Lock(锁)来实现进程间的同步。Lock提供了一种机制,确保在任意时刻只有一个进程能够访问共享资源。 Lock的工作原理 Lock是一种互斥锁,用于保护共享资源的访问。当一个进程获得了锁之后,其他进程将被阻塞,直到锁被释放。只有释放锁的进程才能继 阅读全文
posted @ 2023-07-23 18:17 Allen_Hao 阅读(185) 评论(0) 推荐(0)
摘要:os.kill是Python中用于向指定进程发送信号的函数。通过os.kill可以发送各种不同的信号,其中最常见的是SIGTERM信号,用于请求进程正常终止 os.kill的工作原理 os.kill函数允许我们向指定的进程发送信号。进程收到信号后,根据信号类型的不同,可以执行相应的处理逻辑。比如,S 阅读全文
posted @ 2023-07-23 18:40 Allen_Hao 阅读(907) 评论(0) 推荐(0)
摘要:守护进程(Daemon Process)是在后台运行的一种特殊类型的进程,它不会受到终端控制和交互的影响。守护进程通常用于执行一些系统级的任务或服务,比如网络服务、定时任务等。 ''' 1. 创建守护进程: 1. 在Python中,可以通过multiprocessing模块来创建守护进程。使用mul 阅读全文
posted @ 2023-07-23 19:02 Allen_Hao 阅读(89) 评论(0) 推荐(0)
摘要:在Python中,想要实现多任务还可以使用多线程来完成。用于IO密集型任务,是cpu调度的最小单位 为什么使用多线程?--节省资源(IO密集型任务) 1. 进程是分配资源的最小单位 , 一旦创建一个进程就会分配一定的资源 , 就像跟两个人聊QQ就需要打开两个QQ软件一样是比较浪费资源的 . 2. 线 阅读全文
posted @ 2023-07-28 00:17 Allen_Hao 阅读(65) 评论(0) 推荐(0)
摘要:步骤 1. 导入线程模块 import threading 2. 创建子线程并指定执行的任务 sub_thread = threading.Thread(target=任务名 3. 启动线程执行任务 sub_thread.start() 示例 1 ''' 2 在Python中,实现多线程多任务可以通 阅读全文
posted @ 2023-07-28 23:08 Allen_Hao 阅读(163) 评论(0) 推荐(0)
摘要:1 ''' 2 threading.Thread类是Python threading模块中用于创建和管理线程的主要类。它可以通过子类化并重写run()方法来定义自己的线程逻辑。一般会使用线程池 3 1. 构造器: 4 threading.Thread类的构造器如下: 5 class threadin 阅读全文
posted @ 2023-07-28 23:26 Allen_Hao 阅读(608) 评论(0) 推荐(0)
摘要:''' 在Python中,使用threading.Thread类创建守护线程可以通过设置daemon参数为True来实现。 守护线程是一种特殊的线程,它会随着主线程的结束而自动退出(守护线程会随着主线程的结束而自动退出。因此,如果主线程先结束,守护线程也会立即退出,无论守护线程是否执行完成。),无需 阅读全文
posted @ 2023-07-28 23:37 Allen_Hao 阅读(349) 评论(0) 推荐(0)
摘要:python 多线程并不是真正的并行执行,而java的多线程是真正的并行执行 python 在Python中,由于全局解释器锁(GIL)的存在,多线程并不能实现真正的并行执行。 GIL是一种机制,它限制了同一时刻只能有一个线程执行Python字节码,这意味着在多线程环境下,多个线程并不能同时执行CP 阅读全文
posted @ 2023-07-29 07:55 Allen_Hao 阅读(271) 评论(0) 推荐(0)
摘要:IO密集型 1. IO密集型任务是指在执行过程中主要涉及到输入输出(IO)操作的任务。这些任务通常需要与外部资源进行交互,如读写文件、网络请求、数据库查询等,而实际的计算量相对较小。 2. 在IO密集型任务中,CPU的使用率相对较低,大部分时间都花费在等待IO操作完成上。因此,多线程在这种情况下能够 阅读全文
posted @ 2023-07-29 09:10 Allen_Hao 阅读(1399) 评论(0) 推荐(0)
摘要:线程之间共享全局变量 多个线程都是在同一个进程中 , 多个线程使用的资源都是同一个进程中的资源 , 因此多线程间是共享全局变量 问题 示例 1 import threading 2 3 4 # 全局变量 5 g_num = 0 6 7 8 # 对g_num进行加操作 9 def sum_num1() 阅读全文
posted @ 2023-07-29 11:35 Allen_Hao 阅读(1121) 评论(0) 推荐(0)
摘要:什么是竞态条件? 竞态条件是指多个线程在访问和操作共享资源时,由于执行顺序的不确定性而导致结果不确定或出现错误。 示例1: ''' 竞态条件是指多个线程在访问和操作共享资源时,由于执行顺序的不确定性而导致结果不确定或出现错误。 ''' import threading # 共享变量 counter 阅读全文
posted @ 2023-07-29 12:01 Allen_Hao 阅读(410) 评论(0) 推荐(0)
摘要:在Python中,可以使用互斥锁(Mutex)来实现线程之间的互斥访问,保证共享资源的安全性。互斥锁可以确保在任何时刻只有一个线程可以持有锁,并且其他线程必须等待锁的释放才能继续执行。 步骤 1. 创建互斥锁对象: lock = threading.Lock() 通过threading.Lock() 阅读全文
posted @ 2023-07-29 12:24 Allen_Hao 阅读(85) 评论(0) 推荐(0)
摘要:1 import threading 2 3 4 # 全局变量 5 g_num = 0 6 7 8 # 对g_num进行加操作 9 def sum_num1(): 10 # 上锁 11 print("sun_num1...") 12 print(f"sum_num1 id(mutex) {id(mu 阅读全文
posted @ 2023-07-29 12:32 Allen_Hao 阅读(47) 评论(0) 推荐(0)
摘要:在Python中,可以使用concurrent.futures模块提供的线程池来管理和执行多个线程任务。线程池提供了一种方便的方式来处理并发任务,可以有效地利用系统资源,提高程序的性能。 ''' 在Python中,可以使用concurrent.futures模块提供的线程池来管理和执行多个线程任务。 阅读全文
posted @ 2023-07-29 15:14 Allen_Hao 阅读(59) 评论(0) 推荐(0)
摘要:在Python中,进程(Process)和线程(Thread)都是用于实现并发执行的机制,但它们有一些重要的区别。 执行方式:进程是程序的一次执行过程,具有独立的内存空间,每个进程都有自己的代码段、数据段和堆栈;而线程是在进程内部执行的,共享进程的内存空间,包括代码段、数据段和堆栈。 资源占用:由于 阅读全文
posted @ 2023-07-29 15:28 Allen_Hao 阅读(118) 评论(0) 推荐(0)
摘要:函数参数 Python中一切皆引用:变量名(包括类名和函数名等)存放的都是内存空间(地址),所以都可以作为参数传递 函数名的作用 ① 函数名存放的是函数所在空间的地址 ② 函数名()执行函数名所存放空间地址中的代码 ③ func01 = func02函数名可以像普通变量一样赋值,func01() 等 阅读全文
posted @ 2023-08-26 16:22 Allen_Hao 阅读(69) 评论(0) 推荐(0)
摘要:nonlocal关键字在闭包中的作用 在Python中,默认情况下,内层函数只能访问外层函数的变量,但不能修改它们。如果希望在闭包函数中修改外层函数中的变量,可以使用nonlocal关键字来声明要修改的变量。 示例 1 # 外部函数 2 def func_out(num1): 3 # 内部函数 4 阅读全文
posted @ 2023-08-26 16:52 Allen_Hao 阅读(150) 评论(0) 推荐(0)
摘要:主要的作用和用途: 保存状态:闭包可以用于保存函数的局部变量状态,这样在每次调用函数时,闭包内的变量都会被保留下来。这使得闭包非常适合用于实现计数器、缓存等功能。 延迟执行:通过使用闭包,我们可以将某个操作延迟到稍后执行。例如,可以创建一个延迟调用的函数,该函数接受一些参数,并在稍后的时间执行特定的 阅读全文
posted @ 2023-08-26 17:14 Allen_Hao 阅读(82) 评论(0) 推荐(0)
摘要:通过使用闭包,我们可以实现许多有用的功能,提高代码的灵活性和可维护性。然而,在使用闭包时需要注意避免循环引用、内存泄漏等问题。 循环引用 循环引用指的是闭包函数中捕获的变量与闭包函数本身形成了一个循环引用关系。 当闭包函数捕获了外部函数的变量,并且这个变量又引用了闭包函数本身时,就会出现循环引用的情 阅读全文
posted @ 2023-08-26 17:35 Allen_Hao 阅读(130) 评论(0) 推荐(0)
摘要:弱引用(Weak Reference)是编程语言中的一个概念,用于在某些情况下防止循环引用并避免内存泄漏。它在内存管理和垃圾回收的背景下发挥作用。 循环引用:循环引用指的是对象之间形成了一个循环的引用链,导致这些对象都无法被垃圾回收,即使它们已经不再被程序所使用。这可能会导致内存泄漏,因为这些无法回 阅读全文
posted @ 2023-08-26 17:38 Allen_Hao 阅读(113) 评论(0) 推荐(0)
摘要:定义 给已有函数增加额外功能的函数。其本质上就是一个闭包函数。 特点 1. 不修改已有函数的源代码(无风险) 2. 不修改已有函数的调用方式(无风险) 3. 给已有函数增加额外的功能(只需要关注额外增加的部分) 语法 1. 定义一个装饰器 2. 在目标函数上使用装饰器 通过@装饰器名称 放在定义目标 阅读全文
posted @ 2023-08-27 08:08 Allen_Hao 阅读(58) 评论(0) 推荐(0)
摘要:1. 装饰器语法糖示例 注解形式: # 1定义一个装饰器(装饰器的本质是闭包) def check(fn): def inner(): print("请先登陆") fn() return inner # 2使用装饰器装饰函数(增加一个登陆功能) # 解释器遇到@check 会立即执行 comment 阅读全文
posted @ 2023-08-27 11:31 Allen_Hao 阅读(35) 评论(0) 推荐(0)
摘要:说明 在 Python 中,property 属性是一种特殊的属性,它允许你在访问和设置对象的属性时执行自定义的操作。property 属性用于将方法转化为属性,从而在外部代码中可以像访问普通属性一样访问这些方法。它是一种实现封装和控制属性访问的强大工具。 property 属性的主要目的是提供一种 阅读全文
posted @ 2023-08-27 16:05 Allen_Hao 阅读(128) 评论(0) 推荐(0)
摘要:说明 with语句是Python中一种用于管理资源的机制,它与上下文管理器紧密相关。 上下文管理器是一个对象(因此自定义时需要创建一个类),它定义了在进入和退出特定代码块(称为上下文)时要执行的操作。 使用with语句和上下文管理器可以确保资源的正确分配和释放,以及在使用完资源后进行清理工作,从而提 阅读全文
posted @ 2023-08-29 00:59 Allen_Hao 阅读(379) 评论(0) 推荐(0)
摘要:概念 Python生成器是一种特殊的函数,它可以在需要时生成一个序列的值。与普通函数不同,生成器函数使用yield语句或生成器表达式(也叫生成器推导式)来产生值,并且可以暂停和恢复执行。生成器可以逐个生成值,而不是一次性生成整个序列,这样可以节省内存并提高性能。 一般与循环语句(for、while) 阅读全文
posted @ 2023-08-29 23:15 Allen_Hao 阅读(79) 评论(0) 推荐(0)
摘要:普通赋值 1 # 1 普通赋值 2 a = [1, 2, 3] 3 b = [11, 22, 33] 4 c = [a, b] 5 6 d = c 7 8 print(id(d)) # 2517490235456 9 print(id(c)) # 2517490235456 10 print(f"c 阅读全文
posted @ 2023-08-30 00:03 Allen_Hao 阅读(41) 评论(0) 推荐(0)
摘要:说明 正则表达式(Regular Expression,简称为 regex 或 regexp)是一种用于描述、匹配和操作字符串模式的工具。它是一种强大的文本处理工具,用于在字符串中查找、替换、分割和验证特定模式的文本。 正则表达式由一系列字符和特殊字符组成,用于构建一个模式,该模式描述了你想要匹配的 阅读全文
posted @ 2023-08-30 23:30 Allen_Hao 阅读(326) 评论(0) 推荐(0)