python算法

python学习笔记之使用threading模块实现多线程(转)

做~自己de王妃 提交于 2020-03-02 12:35:43
综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势。 在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用 threading模块实现多线程编程。这篇文章我们主要来看看Python对多线程编程的支持。 在语言层面,Python对多线程提供了很好的支持,可以方便地支持创建线程、互斥锁、信号量、同步等特性。下面就是官网上介绍threading模块的基本资料及功能: 实现模块 thread:多线程的底层支持模块,一般不建议使用; threading:对thread进行了封装,将一些线程的操作对象化 threading模块 Thread 线程类,这是我们用的最多的一个类,你可以指定线程函数执行或者继承自它都可以实现子线程功能; Timer与Thread类似,但要等待一段时间后才开始运行; Lock 锁原语,这个我们可以对全局变量互斥时使用; RLock 可重入锁,使单线程可以再次获得已经获得的锁; Condition 条件变量,能让一个线程停下来,等待其他线程满足某个“条件”; Event 通用的条件变量

Python快速编程入门,打牢基础必须知道的11个知识点 !

回眸只為那壹抹淺笑 提交于 2020-03-02 12:13:11
Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. Python 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,你可以在一个Python提示符,直接互动执行写你的程序。 Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。 Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。 Python 发展历史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。 像

python文本相似度算法详解

守給你的承諾、 提交于 2020-03-02 07:21:32
1.读取文档 2.对要计算的多篇文档进行访问 3.将文档整理成指定格式,方便后续进行计算 4.计算出词语的频率 5.对频率低的词语进行过滤 6.通过语料库建立词典 7.加载要对比的文档 8.将要对比的文档通过doc2bow转化为稀疏向量 9.对稀疏向量进行进一步处理,得到新语料库 10.将新语料库通过tfidfmodel进行处理,得到tfidf 11.通过token2id得到特征数 12.稀疏矩阵相似度,建立索引 13.得到最终相似度结果 from gensim import corpora, models, similarities import jieba from collections import defaultdict dog = "C:/Users/xt/PycharmProjects/similar/dog.txt" # 1.读取文档 cat = "C:/Users/xt/PycharmProjects/similar/cat.txt" d1 = open(dog).read() # 2.对要计算的多篇文档进行访问 c1 = open(cat).read() data1 = jieba.cut(d1) # 3.将文档整理成指定格式,方便后续进行计算 data2 = jieba.cut(c1) data11 = '' for item in data1: data11

python冒泡排序

大城市里の小女人 提交于 2020-03-02 04:59:49
冒泡排序是最基本的排序算法,原理即元素两两比较。 一次将最大或者最小放到一端,那么实现过程是这样的 def bubble_sort(ls): ls_len = len(ls) for i in range(ls_len-1): for j in range(i+1, ls_len): if ls[i] > ls[j]: ls[i], ls[j] = ls[j], ls[i] 简单吧 来源: oschina 链接: https://my.oschina.net/u/186468/blog/675923

【华为云技术分享】【Python算法】分类与预测——决策树

瘦欲@ 提交于 2020-03-02 04:06:45
1.决策树定义 决策树方法在分类、预测、规则提取等领域有着广泛的应用。20 世纪 70 年代后期和 80 年代初期,机器学习研究者 J.Ross Quinlan 提出了 ID3 算法以后,决策树就在机器学习与数据挖掘领域取得了巨大的发展。Quinlan 后来又提出了 C4.5,这成为了新的监督学习算法。1984年,几位统计学专家提出了 CART 分类算法。ID3 和 CART 算法几乎同时被提出,但都是采用的类似的方法从训练样本中学习决策树。决策树是一种树状结构,它的每个叶节点对应一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同值将其划分成若干个子集,而对于非纯的叶节点,多数类的标号给出到达这个节点的样本所属的类。构造决策树的核心的问题是在每一步中如何选择适当的属性对样本进行拆分。对一个分类问题,从已知类标记的训练样本中学习并构造出决策树其实是一个自上而下,分而治之的过程。 2.常用决策树算法 常用的决策树算法有三种,分别是 ID3 算法、C4.5 算法、CART 算法三种。   (1) ID3 算法:此算法的核心在于决策树的各级节点上,使用信息增益方法作为属性的选择标准,来帮助确定生成每个节点时所应采取的合适属性;   (2) C4.5 算法:此决策树生成算法相对于 ID3 算法的重要改进是使用信息增益率来选择节点属性,此算法可以克服ID3算法的不足

Python 查找算法

*爱你&永不变心* 提交于 2020-03-01 21:31:25
递归查找 def bi_search_re(num_list,val): def bi_search(l, h): if(l > h): return -1 mid = (l + h) // 2 if(num_list[mid] == val): return mid ; if(num_list[mid] > val): return bi_search(l, mid - 1) else: return bi_search(mid + 1, h) return bi_search(0,len(num_list)-1) num_list = [0,1,2,3,4] print(bi_search_re(num_list,1)) print(bi_search_re(num_list,3)) 二分法查找,前提:有序 def bi_search_iter(alist,item): left, right = 0, len(alist) - 1 while(left <= right): mid = left + (right - left) // 2 #(left + right) // 2 Java或c++容易溢出 if(item < mid): right = mid -1 elif(item > mid): left = mid + 1 else: return mid

Python算法学习: 竞码编程-蓝桥杯模拟赛3题解

拈花ヽ惹草 提交于 2020-03-01 19:17:15
文章目录 A. 试题A:生存还是毁灭,这是一个问题 7’ B. 试题B:小小神枪手 开局98K 8' C. 试题C:关云长单刀会金莲,贾宝玉三打白骨精 10’ D. 试题D:抽刀断水水更流,举杯销愁愁更愁 10’ A. 试题A:生存还是毁灭,这是一个问题 7’ 描述 对于给定的文章,求出出现频率最高的字母。 对于字母的出现频率,我们定义为:该字母在整个文章中出现的次数。 例如:“To be or not to be, that is the question!” 出现频率最高的字母是:t,总共出现了77次。 对于以下莎士比亚的《哈姆雷特》经典片段,你能帮JM找到出现频率最高的字母出现的次数吗? 输出出现频率最高的字母出现的次数。 注意:字母 不区分大小写。 思路: 这里我将a-z A-Z的ascii 编码作为筛选点, 将所有的字母传入新列表然后寻找 str = ''' To be, or not to be: that is the question, Whether it's nobler in the mind to suffer The slings and arrows of outrageous fortune, Or to take arms against a sea of troubles, And by opposing end them. To die,to

python学习-[小甲鱼]零基础入门教学

谁都会走 提交于 2020-03-01 17:49:00
《零基础入门学习Python》(小甲鱼)学习记录 3月1日 P46魔法方法:属性访问 getattr setattr delattr property >>> class C: def __init__(self, size=10): self.size = size def getSize(self): return self.size def setSize(self, value): self.size = value def delSize(self): del self.size x = property(getSize, setSize, delSize) __getattr__(self,name)定义当用户视图获取一个不存在的属性时的行为 __getattribute__(self,name) 定义当该类的属性被访问时的行为 __setattr__(self,name,value) 定义当一个属性被设置时的行为 __delattr__(self,name) 定义当一个属性被删除时的行为 >>> class C: def __getattribute__(self,name): print("getattribute") return super().__getattribute__(name) def __getattr__(self, name): print(

Python基础-高级变量类型

╄→гoц情女王★ 提交于 2020-03-01 17:27:22
Python基础-高级变量类型 1.高级变量类型 """ 数值型:int float bool compex 非数值型:str list set dict tuple """ # 保存所有人的姓名信息? # str = '秦海根张刚' # 获取第二个人的姓名 """------------------ 定义列表 ------------------""" # 定义列表保存我们班所有人的姓名 # nameList = ['秦海根','张刚','昌子为','易文'] # print(nameList) # 列表可以保存不同的数据类型吗? # nameList = ['秦海根','张刚','昌子为','易文',20,1.23,True] # print(nameList) """------------------ 访问列表中某一个元素 ------------------""" # nameList = ['秦海根','张刚','昌子为','易文'] # 秦海根 张刚 昌子为 易文 # 0 1 2 3 # 访问第三个元素 # 两种方式操作效果都是一样的 # ele = nameList[2] # ele = nameList.__getitem__(2) # print(ele) """------------------ 遍历列表 ------------------"""

python多继承

穿精又带淫゛_ 提交于 2020-03-01 16:49:34
python支持多继承 通过__mro__可查找继承列表,他是根据mro算法排列继承顺序 按照 __mro__ 的输出结果 从左至右 的顺序查找可继承方法 来看一个例子 class Base: def __init__(self): print("Base") class Human(Base): def __init__(self): super().__init__() print("Human") class Job(Base): def __init__(self): super().__init__() print("Job") class Teacher(Human, Job): def __init__(self): super().__init__() print("Teacher") if __name__ == "__main__": teacher = Teacher() print(Teacher.__mro__) 结果: Base Job Human Teacher (<class '__main__.Teacher'>, <class '__main__.Human'>, <class '__main__.Job'>, <class '__main__.Base'>, <class 'object'>) 来源: https://www.cnblogs