自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 python进阶13——手动实现一个支持切片的类型

这里我们实现一个Group类型的定义,它含有多个属性(leader,staffs,group_name),其中staffs是一个list序列,切片也是在这个staffs的list上操作,经过切片的依然是Group类型。

2023-10-09 20:27:18 62 1

原创 Python进阶12——序列类型继承关系

在collection.abc中,可以看见所有的python序列基类。包括Set,Sequence等重要的基类,我们在python中要使用的类多继承于这些基类。

2023-10-09 17:43:19 89 1

原创 python进阶11——上下文环境

运行上述代码,except和finally模块都会执行,但最后的返回值?返回了finally的返回值,可见函数在except中仍然不会遇见return语句后立刻结束,依然会执行到finally中。由此,如果涉及文件的关闭时,可以将关闭语句写在finally中,保证文件关闭,回收资源。

2023-10-09 14:47:12 67 1

原创 python进阶10——并发数据同步和共享

个人认为,并发追求的就是多核的效率加成,所以python并发应当首选,但偶尔有场景进程无法适用,比如有些变量(函数方法,类,生成器,文件,锁和进程等)是无法序列化(转为josn或者pickle),就无法使用工具包manager()的工具类进行共享。如果自己实现新的共享方法,可能开发量较大,且质量难以保证。此时可考虑用处理,规避进程的变量共享难题,而且实际场景中,大概率都是瓶颈,所以使用线程其实也的确有些优势。个人而言,选择进程和线程较为重视的安全性,,互不干扰。

2023-09-28 15:56:53 415

原创 python进阶9——Joinablequeue和协程

创建可连接的共享进程队列,它们也是队列,但是这队列比较特殊.它可以允许消费者通知生产者项目已经被成功处理。这里必须是生产者生产完了,进程被挂起,等到消费者完成消费的时候,生产者进程就结束,然后主程序结束。将消费者进程设置为守护进程。这样的话,主进程结束的时候,消费进程也就结束了。JoinableQueue较于Queue(这里的Queue是multprocessing的,不是queue的),有两个新的方法:使用者使用此方法发出信号,表示q.get()返回的项目已经被处理。

2023-09-26 21:53:28 209

原创 python进阶8——并发操作函数

python封装了4种常用方法,map, apply, map_async, apply_async用于实现并发。注意:map 和 map_async 入参为迭代器类型,可以批量调用。而apply和apply_async只能一个个调用。

2023-09-25 15:49:37 273 1

原创 python进阶7——进程

Python中的多进程之间可以使用信号量和管道来进行同步通信。学过操作系统的知道,信号量是一种控制对公共资源或临界区的访问的机制,它维护着一个计数器,指定可同时访问资源或进入临界区的线程数。而管道则是在内存中开辟管道空间,生成管道对象,多个进程使用一个管道对象进行读写。

2023-09-23 17:21:31 95 1

原创 python进阶6——线程和同步

同步就是在发出一个调用后,如果没有得到结果,调用就不返回。调用返回,就一定得到返回值。换句话说,就是由调用者主动等待这个调用的结果。

2023-09-18 16:38:01 76

原创 python进阶4——yield,迭代器和生成器

首先看以下代码,根据以往的知识,tmp=flatten(items),这两者是相当的,所以print的结果不会改变,但事实并非如此。这是为什么?关键就在于yield和next函数。一次yield相当于return,但yield不会彻底终结这个函数,而是保留阻塞当前函数的状态,等待下一次next函数调用后再启动。生成0到9的平方数这里用type也可以查看类型:两者的显示都是generator(生成器)类型。

2023-09-15 20:53:04 40

原创 python进阶5——装饰器

当然,在使用语法糖形式时有些变化,在装饰器没有参数时,可以自动接受被装饰的函数作为唯一的参数,但是有参数后这样的情况就不再适用了,需要我们自己指定函数的参数。count_time(func)(4),func为指定的函数,后一个()中为func中需要传入的参数,后者的写法中会先执行func(4),后一次()需要参数而没有参数,自然报错了。但是如果还要对第三个函数进行一样的运行时间展示,我们还要写一次一样的time,time相减的操作,这相当于重复劳动,有没有办法避免呢?通过执行,我们可以看见两者的执行时间。

2023-09-14 17:08:23 57 1

原创 python进阶2——类与实例

下次见!

2023-07-28 18:43:46 59 1

原创 python进阶1——万物皆为对象

成为python中的一般对象有三个基本的要求:1,内存地址:可以使用id()方法获得对象的地址。2,类型:对象是int,str等基本类型,还是其他类型,无论如何,可用type()方法获得对象的类型。3,值:对象的内容,数字,字符或者其他可以成为其内容的东西。

2023-07-23 15:38:20 61

原创 KMP字符串匹配(python描述)

KMP匹配字符串时,如果匹配字符失败了,并不从头再匹配,而是回溯到一个特定的位置,这个位置和需要匹配的字符串有关,用next数组记录匹配每个位置失败时要回溯的位置。这样就能减少回溯和匹配的次数,从而提高计算效率。计算next数组:def GetNext(s:str)->list: n = len(s) k = 0 Next = [-1]#首个匹配失败会返回-1 for i in range(1,n):#从第二个字符开始匹配 Next.append(k

2022-02-12 22:29:50 408

原创 C++ const与constexpr

const是原C语言的关键字,修饰变量时表示只读的变量:const int a = 10;这就表明变量 a 是只读的变量。但是编译器优化时会直接使用10来替换a,比如:const int a = 10;int *b = (int*)&a;//这里不能直接写&a对a取地址,因为指针可能改变a的值。*b = 20;cout<<a<<" "<<*b<<endl;cout<<&a<<" "<&

2022-02-07 01:50:54 769

answer4.docx

answer4.docx

2021-11-12

空空如也

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

TA关注的人

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