python
python学习
爱你不只两三天
这个作者很懒,什么都没留下…
展开
-
linux系统下找不到so文件的解决办法
linux系统下找不到so文件的解决办法:原创 2023-03-21 09:14:58 · 372 阅读 · 0 评论 -
【无标题】
python升级后 ModuleNotFoundError: No module named 'apt_pkg' 的解决办法原创 2022-11-03 13:56:49 · 96 阅读 · 0 评论 -
元组
元组简介元组本身是不可变数据类型,没有增删改查元组内可以存储任意数据类型t = (1,2.3,True,'westos')元组里面包含可变数据类型时,可以简介修改元组内容t = ([1,2,3,4],5)t[0].append(5)print(t) # ([1,2,3,4,5], 5)print(type(t)) # tuple元组里面只有一个元素的时候,要加逗号,否则数据为字符串类型t = ('westos')print(type(t)) # str原创 2020-10-29 09:23:20 · 152 阅读 · 0 评论 -
列表
列表添加元素# 在列表尾部添加一个元素list.append() # 在指定位置添加元素,如果下标不存在,就在末尾添加list.insert(n, '4')# 列表合并, list2中仍有元素list1.extend(list2) 查询列表中的值# 通过下标索引访问print(list[n])# 查看某个元素在列表中的个数,如果元素不存在,返回0list.count(xx)# 返回元素的下标,如果有多个,返回第一个,找一个不存在的元素会报错list.index原创 2020-10-29 09:20:10 · 136 阅读 · 0 评论 -
python中静态方法、类方法和实例方法的区别
直接上代码# coding:utf-8 class Apple: def fun1(self): return 'normal' @staticmethod def fun2(): return 'staticmethod' @classmethod def fun3(cls): return 'classmethod' print Apple.fun1 print A原创 2020-05-15 10:28:33 · 285 阅读 · 1 评论 -
python类中方法加单下划线、双下划线、前后双下滑线的区别
首先看一段代码class Foo():def __init__(self): print "__init__ method"def public_method(self): print "public_method"def __private_method(self): print "__private_method"def _halfprivate_method(self): print "_halfprivate_method"这里我们定义..原创 2020-05-15 10:15:22 · 2891 阅读 · 0 评论 -
GIL锁
熟悉python的都知道,在C语言写的python解释器中存在全局解释器锁,由于全局解释器锁的存在,在同一时间内,python解释器只能运行一个线程的代码,这大大影响了python多线程的性能。而这个解释器锁由于历史原因,现在几乎无法消除。python GIL 之所以会影响多线程等性能,是因为在多线程的情况下,只有当线程获得了一个全局锁的时候,那么该线程的代码才能运行,而全局锁只有一个,所以使用...原创 2020-05-04 12:41:52 · 127 阅读 · 0 评论 -
迭代器的应用
迭代器的应用1, 迭代器的优点在python2中,range直接返回一个列表,一次性全部返回,占用大量的内存空间和时间在python2中,xrange(10)会立刻返回,保存的是生成值的方式,占用极小内存空间在python3中,range()直接替换了python2中的xrange(),占用极小内存空间,保存的是生成值的方式2, 斐波那契数列实现示例# 斐波那契数列实现 a =...原创 2019-09-11 14:08:02 · 233 阅读 · 0 评论 -
迭代器的定义与自定义一个迭代器
迭代器1,如何让一个对象成为一个可以迭代的对象?该对象的内部需要实现 __iter__方法代码示例:from collections import Iterable, Iteratorclass Groups(object): def __init__(self): self.names = [] def add(self, name): ...原创 2019-09-11 09:03:45 · 1023 阅读 · 1 评论 -
生成器详解(绝无仅有)
列表推导式什么是列表推导式列表推导式的最外层[]换成()就变成了生成器列表推导式占用空间,生成器节省空间生成器的第二种方式,把函数中的return换成yield生成器完成斐波那契数列把函数中的return换成yield就好,当调用函数的时候,如果函数中有yield,不是调用函数,而是创建了一个生成器对象,我们可以通过for进行取值,所以生成器是一种特殊的迭代器从生成器取出值的第...原创 2019-09-11 14:33:23 · 133 阅读 · 0 评论 -
生成器和迭代器有什么用
1, 生成器生成器可以让一个函数暂停执行使用了yield关键字的函数不再是函数,而是生成器。(使用了yield的函数就是生成器)yield关键字有两点作用:保存当前运行状态(断点),然后暂停执行,即将生成器(函数)挂起将yield关键字后面表达式的值作为返回值返回,此时可以理解为起到了return的作用可以使用next()函数让生成器从断点处继续执行,即唤醒生成器(函数)Pytho...原创 2019-09-12 00:31:47 · 1147 阅读 · 0 评论 -
yield, greenlet, gevent的用法
1, yield当一个函数中有了yield,这就是一个生成器,生成器时特殊的迭代器,我们可以通过next()函数对生成器进行取值,当执行到yield时,函数暂停执行,再次通过next()进行激活,2, greenletgreenlet是对yield的封装,通过创建greenlet对象,然后调用对象.switch方法进行执行任务,但是有一个缺点,就是遇到延时的操作,程序会进行等待,3...原创 2019-09-12 11:43:40 · 136 阅读 · 0 评论 -
Python中进程, 线程, 协程对比和区别
进程、线程、协程对比进程,线程,协程都可以实现多任务,实现多任务的方式不一样进程是资源分配的单位,一个进程挂掉不会影响另一个进程的执行,更加稳定,效率很低线程是操作系统调度的单位,是用来执行程序的,相对于进程而言,线程更加节省资源但是当一个线程中有很多网络请求时,线程会进行等待,在这里就可以考虑协程,协程会利用其等待的时间去执行其他的任务,协程切换任务消耗资源很小,相当于调用了另一个函数...原创 2019-09-12 11:28:34 · 119 阅读 · 0 评论 -
使用yield完成多任务
1, 协程协程,又称微线程,纤程。英文名Coroutine。2, 协程是啥协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。 为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某...原创 2019-09-12 00:47:29 · 184 阅读 · 0 评论 -
进程间通信的通信方式
1, 线程间通信多线程执行任务共享一份进程资源,多线程通信非常方便但是进程之间是相互独立的,如何完成通信呢???2, 进程之间通信第一种方式socket通信,通过端口和ip进行通信,不在同一台电脑上也能通信第二种方式通过文件,文件存储在硬盘上,一个进程读文件,一个进程写文件,缺点,硬盘读取数据很慢第三种方式通过Queue队列(先进先出) 也就是内存,执行速度...原创 2019-09-12 13:09:22 · 114 阅读 · 0 评论 -
使用Process创建进程
1, 创建方式multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情from multiprocessing import Processimport timedef run_proc(): """子进程要执行的代码""" while True: ...原创 2019-09-12 12:44:54 · 384 阅读 · 0 评论 -
进程和程序的区别
进程和程序的区别程序是静态的,运行起来的程序叫做进程,一份程序可以运行起来多个进程,进程运行起来后占用资源,比如说内存,摄像头,鼠标,键盘等等进程就好比一盘菜程序就是一个菜谱...原创 2019-09-12 11:54:18 · 266 阅读 · 1 评论 -
Python中os与sys两模块的区别
1, 关系os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境2, os常用操作os.remove(‘path/filename’) 删除文件os.rename(oldname, newname) 重命名文件os.walk() 生成目录树下的所有文件名os.chd...原创 2019-09-13 14:13:08 · 82 阅读 · 0 评论