07 2021 档案

摘要:环境变量是什么? 比如说在任何命令行中输入python都可以直接找到python.exe文件,使用python命令启动python解释器 其实我们可以把环境变量是理解为【系统的视线范围】,没错,配置进入了环境变量的程序,就等于是进入了系统的视线范围,打开DOS命令窗口后输入程序名,系统就会把在其视线 阅读全文
posted @ 2021-07-30 14:08 刘家小仙女 阅读(239) 评论(0) 推荐(0)
摘要:安装MySql(5.6.44版本) 官网下载版本:https://downloads.mysql.com/archives/community/ 将my-default.ini复制到PyCharm中,重命名为my.ini将里面的内容全删除将下面代码写入后,将my.ini添加到mysql文件里面 注意 阅读全文
posted @ 2021-07-30 14:05 刘家小仙女 阅读(87) 评论(0) 推荐(0)
摘要:什么是数据库?(DataBase,简称DB) 数据库是一个可以在一台机器上独立工作的,并且可以给我们提供高效、便捷的方式对数据进行增删改查的一种工具 数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的,过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用 阅读全文
posted @ 2021-07-30 13:45 刘家小仙女 阅读(377) 评论(0) 推荐(0)
摘要:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。) 动画演示 python实现代码 def inserti 阅读全文
posted @ 2021-07-21 19:06 刘家小仙女 阅读(203) 评论(0) 推荐(0)
摘要:选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间。 算法步骤: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列 阅读全文
posted @ 2021-07-21 19:05 刘家小仙女 阅读(136) 评论(0) 推荐(0)
摘要:算法步骤 比较相邻的两个元素,如果第一个比第二个大,那么就交换他们两个。 对每一对相邻的元素同样的工作,从开始的第一队,到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,直到没有任何一对数字需要比较 动画演示 python实现代码 def bubbleSort(a 阅读全文
posted @ 2021-07-21 19:00 刘家小仙女 阅读(143) 评论(0) 推荐(0)
摘要:基本介绍 photoshop是由Adobe(中文谐音:奥多比)公司开发的图形图像处理和编辑的软件。他的功能强大、易学易用,深受图形图像处理爱好者和平面设计人员德喜爱,已经成为这一领域最流行的软件之一。 运用领域 平面设计 UI设计 商业精修 创意合成 摄影后期 插画绘图 PS页面 阅读全文
posted @ 2021-07-13 10:37 刘家小仙女 阅读(846) 评论(0) 推荐(0)
摘要:进程 数据隔离 数据不安全(数据共享Manager()) 操作系统级别的 开启关闭开销大 能利用多核 线程 数据共享 数据不安全(出现 if while += -=) 操作系统级别的 开启关闭开销小 Cpython解释器下不能利用多核 协程 数据共享 数据安全(协程之间的所有切换都时由用户进行切换的 阅读全文
posted @ 2021-07-02 01:06 刘家小仙女 阅读(78) 评论(0) 推荐(0)
摘要:协程 协程是操作系统不可见的 什么是协程? 协程本质上就是一条线程,多个任务在一条线程上来回切换,来规避IO操作,就达到了我们将一条线程中的IO操作降到最低的目的。 gevent 第三方模块 gevent,利用了底层模块(greelet)完成切换 + 自动规避IO的功能 gevent模块不能规避所有 阅读全文
posted @ 2021-07-02 01:05 刘家小仙女 阅读(591) 评论(0) 推荐(0)
摘要:池concurrent.futrues 什么是池? 要在程序开始的时候,还没提交任务,先创建几个线程或者进程放在一个池子里,这就是池 为什么要用池? 如果先开好进程/或线程,那么有任务之后就可以直接使用这个池中的数据了 开好的进程或线程会一直存在池中,可以被多个任务反复利用,这样极大的减少了开启,关 阅读全文
posted @ 2021-07-02 01:03 刘家小仙女 阅读(2914) 评论(0) 推荐(0)
摘要:判断数据是否安全 并发运用数据共享,异步,则数据不安全 并发运用+=,*=,-=,/=,赋值等则数据不安全 并发时运用if 、while 条件的则数据不安全 阅读全文
posted @ 2021-07-02 01:00 刘家小仙女 阅读(77) 评论(0) 推荐(0)
摘要:进程队列queue 特点 能够实现进程之间的通信 数据安全 先进先出 实现原理 基于管道+锁 管道基于文件级别的socket+pickle实现的 from multiprocessing import Process from multiprocessing import Queue def f_p 阅读全文
posted @ 2021-07-02 00:59 刘家小仙女 阅读(66) 评论(0) 推荐(0)
摘要:线程队列queue queue:线程之间数据安全的容器队列 原理:加锁 + 链表 Queue 先进先出 import queue q=queue.Queue(4) #fifo 先进先出的队列 4:设置列表长度为4,只能放4个数 q.put(1) #放入 print(q.get()) #取出 try: 阅读全文
posted @ 2021-07-02 00:57 刘家小仙女 阅读(87) 评论(0) 推荐(0)
摘要:递归锁(RLock) 递归锁可以开启多个锁(开启几个就要关闭几个),经常用于解决死锁现象 将多个锁,改成同时使用一把递归锁 缺点:效率没有互斥锁高 代码 from threading import Thread,RLock a=0 def son1(rlock): with rlock: for i 阅读全文
posted @ 2021-07-02 00:55 刘家小仙女 阅读(527) 评论(0) 推荐(0)
摘要:死锁现象 死锁现象的产生: 在开启多线程的时候使用多把锁A,B(互斥\递归)交替使用 规定必须拿到A才能使用B 小杨同时拿到A,B使用完释放锁的时候小王拿到了A,小刘拿到了B,两个人进入僵持状态,就形成了死锁。 解决方法: 将多个锁,改成同时使用一把递归锁 (经常用于突发解决死锁现象,缺点:执行效率 阅读全文
posted @ 2021-07-02 00:53 刘家小仙女 阅读(79) 评论(0) 推荐(0)
摘要:dic 查看CPU运行指令 只要没有出现 STORE_GLOBAL,那么数据基本是安全的 import dis a=0 def func1(): global a a+=1 dis.dis(func1) ''' 0 LOAD_GLOBAL 0 (a) #在CPU中加载全局变量 2 LOAD_CONS 阅读全文
posted @ 2021-07-02 00:52 刘家小仙女 阅读(125) 评论(0) 推荐(0)
摘要:守护进程和守护线程的对比 守护进程:守护进程会随着主进程的代码结束而结束,如果主进程结束之后还有其他子进程在运行,守护进程是不守护的, 在windows系统中开启线程需要加 if __name__ == 'main':,Linux,mac系统中则不用 from multiprocessing imp 阅读全文
posted @ 2021-07-02 00:50 刘家小仙女 阅读(131) 评论(0) 推荐(0)
摘要:守护线程 为什么主线程会等子线程结束之后在结束? 主线程结束,进程就会结束 守护线程随着主线程的结束而结束 守护线程在主线程结束之后会守护其他子线程吗? 会 代码: import time from threading import Thread def son1(): while True: pr 阅读全文
posted @ 2021-07-02 00:47 刘家小仙女 阅读(45) 评论(0) 推荐(0)
摘要:线程互斥锁和GIL的区别 1.线程互斥锁是Python代码层面的锁,解决Python程序中多线程共享资源的问题(线程数据共共享,当各个线程访问数据资源时会出现竞争状态,造成数据混乱); 2.GIL是Python解释层面的锁,解决解释器中多个线程的竞争资源问题(多个子线程在系统资源竞争是,都在等待对象 阅读全文
posted @ 2021-07-02 00:46 刘家小仙女 阅读(409) 评论(0) 推荐(1)
摘要:线程锁(互斥锁)(Lock) 在开启多个线程的时候使用if、while、+-、\的时候会导致数据不安全(各个线程访问数据资源时会出现竞争状态,造成数据混乱)所以必须加锁 代码: from threading import Thread,Lock a=0 def son1(lock): with lo 阅读全文
posted @ 2021-07-02 00:40 刘家小仙女 阅读(167) 评论(0) 推荐(0)
摘要:GIL锁(全局解释器锁)(线程) 什么是GIL锁? 1.GIL是Python解释层面的锁,解决解释器中多个线程的竞争资源问题(多个子线程在系统资源竞争是,都在等待对象某个部分资源解除占用状态,结果谁也不愿意先解锁,然后互相等着,程序无法执行下去)。 2.在Cpython解释器下,GIL(全局解释器锁 阅读全文
posted @ 2021-07-02 00:37 刘家小仙女 阅读(173) 评论(0) 推荐(0)
摘要:线程 什么是线程:能被操作系统调度(给CPU执行)的最小单位 同一个进程中的多个线程可以同时被CPU执行 线程的优缺点: 优点:资源共享,效率高,开启关闭切换时间开销小,可以被多个CPU调度,由操作系统负责调度 缺点:数据不安全 同一进程中的线程资源共享,可以利用多核,操作系统调度,数据不安全,开启 阅读全文
posted @ 2021-07-02 00:34 刘家小仙女 阅读(87) 评论(0) 推荐(0)