-
1、简单应用代码如下:1234567891011121314#!/usr/bin/env python# -*- coding: utf-8 -*-# @File : jieba.analyse.py# @Author: 赵路仓# @Date : 2020/3/14# @Desc : 提取关键字# @Contact : 398333404@qq.com import jieba.analyse text='安全、防止水合物和段塞生成的重要措施之一。因此,针对未来还上油田开发技术,我们预先开展了水深1500米管道式油气水分离器的概念设计。通过该研究,提出适合海洋环境的体积小、重量轻、分离效率高、便于操作和维护的新型油气水三相分离器,使其成为海洋深水油气田开'Key=jieba.analyse.extract_tags(text,topK=3)print(Key)2、含参使用1keywords = jieba.analyse.extract_tags(content, topK=5, withWeight=True, allowPOS=()) 第一个参数:待提取关键词的文本第二个参数:返回关键词的数量,重要性从高到低排序第三个参数:是否同时返回每个关键词的权重第四个参数:词性过滤,为空表示不过滤,若提供则仅返回符合词性要求的关键词代码如下:12345678910111213141516171819#!/usr/bin/env python# -*- coding: utf-8 -*-# @File : jieba.analyse.py# @Author: 赵路仓# @Date : 2020/3/14# @Desc : 提取关键字# @Contact : 398333404@qq.com import jieba.analyse # 字符串前面加u表示使用unicode编码content = u'安全、防止水合物和段塞生成的重要措施之一。因此,针对未来还上油田开发技术,我们预先开展了水深1500米管道式油气水分离器的概念设计。通过该研究,提出适合海洋环境的体积小、重量轻、分离效率高、便于操作和维护的新型油气水三相分离器,使其成为海洋深水油气田开' keywords = jieba.analyse.extract_tags(content, topK=5, withWeight=True, allowPOS=())# 访问提取结果for item in keywords: # 分别为关键词和相应的权重 print(item[0], item[1])
-
Mindspore是最佳匹配昇腾AI处理器算力的全场景深度学习框架,现在已经发布了1.0.1版本,鉴于多数人都是使用windows系统,我想简单说下如何在windows系统上安装Mindspore,另外照例先说明下:1、此教程基于华为云官方的教程并丰富细节。2、此教程适合新手安装使用,大佬请忽略即可。3、此教程是使用pip方式安装,此外还有源码编译方式安装MindSpore CPU版本(Windows),大家也可以用此方式安装,此教程只介绍使用pip方式安装。4、官方介绍是在windows 10上安装,我用windows 7也安装成功了,大家可自行测试。下面简单说下教程:1、首先确认系统环境信息,确认安装Windows 64位操作系统。确认安装Python 3.7.5版本。 如果未安装或者已安装其他版本的Python,则需从华为云下载Python 3.7.5版本 64位进行安装。勾选add python 3.7 to path,再选择点击install now即可正常安装(安装目录最好不要动)。2、安装Python完毕后,将Python和pip添加到系统环境变量。添加Python:控制面板->系统->高级系统设置->环境变量。双击系统变量中的Path,将python.exe的路径添加进去。(如果上步中已经勾选add python 3.7 to path,则可以忽略)添加pip:python.exe同一级目录中的Scripts文件夹即为Python自带的pip文件,将其路径添加到系统环境变量中即可。a、首先找到pip文件的文件路径,并复制。b、在控制面板->系统->高级系统设置->环境变量->系统变量下点击新建,变量名:path,变量值为步骤a的pip文件路径。然后一路点击确定即可。3、确保在联网状态下打开cmd命令提示符,右键以管理员身份运行,输入以下代码回车安装MindSpore。(在联网状态下,安装whl包时会自动下载MindSpore安装包的依赖项)pip uninstall https://ms-release.obs.cn-north-4.myhuaweicloud.com/{version}/MindSpore/cpu/windows_x64/mindspore-{version}-cp37-cp37m-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple4、输入以下命令可验证是否安装成功({version}表示MindSpore版本号,例如下载1.0.1版本MindSpore时,{version}应为1.0.1)。python -c "import mindspore;print(mindspore.__version__)"以上教程如有不足之处,欢迎指正,有问题可以在评论区讨论哈
-
在搜索平台上关于类以及对象都已经被霸屏了,主要的问题无非就是两个,一个是理解二者,另一个就是理解二者之间的使用关系,对于小编来说,两者统一跟大家讲清,相信也很难被大家消化,这不,给大家想出来比较好理解的方式,用最简单的话,快速交大家上手,可别不信,简单易懂内容如下。二者关系:女生口红是一种类,但是mac、完美日记是口红里的个体,被称作是对象。这就是二者之间的关系,有人理解成包含情况也可以。定义类/对象:1234class 类名(父类):class Human(object): passman = Human()实例用法:123456789class A(object): name = "类变量" @classmethod def classfunc(cls): print("类方法") def __init__(self, name): self.name = name def func(self): print("实例方法")我们可以从上述的内容里看出来,类里面试包含方法以及变量的,是可以随便被类调用,那么对象可以使用的就是实例里的方法和变量,这便组成了类和对象的使用。
-
我们可以把需要判断的对象放在程序中,那么执行出来会有两个结果,要么是真,要么为假。我们今天所要讲的all函数就是用来判断参数的程序,根据输入参数的不同,输出True或者False的结果。下面我们就all函数进行说明、语法等方面的了解, 然后通过实例探讨空元组的返回值结果。1.说明:接受一个可迭代器对象为参数,当参数为空或者不为可迭代器对象是报错12345>>> all(2) #传入数值报错Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> all(2)TypeError: 'int' object is not iterable如果可迭代对象中每个元素的逻辑值均为True时,返回True,否则返回False1234>>> all([1,2]) #列表中每个元素逻辑值均为True,返回TrueTrue>>> all([0,1,2]) #列表中0的逻辑值为False,返回FalseFalse如果可迭代对象为空(元素个数为0),返回True1234>>> all(()) #空元组True>>> all({}) #空字典True2.语法1all(iterable) # iterable -- 元组或列表。3.参数iterable -- 元组或列表。4.返回值如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False;5.实例12345678910>>> any(())False>>> any([])False>>> any(['',0])False>>> any(['',0,'1'])True>>> any(['',0,False])False注意:空元组、空列表返回值为True,这里要特别注意。如何处理从python函数返回的空(无)元组我有一个函数,要么返回一个元组,要么返回None.呼叫者应该如何处理这种情况?12345678def nontest(): return None x,y = nontest() Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'NoneType' object is not iterableEAFP:1234try: x,y = nontest()except TypeError: # do the None-thing here or pass或者没有尝试 – 除外:12345res = nontest()if res is None: ....else: x, y = res
-
#!/usr/bin/env python# -*- coding: utf-8 -*- ''''' 使用方法样例 python test20.py 192.168.1.1 (会扫描192.168.1.1-255的ip) 多线程加速后大概十几秒'''import platformimport sysimport osimport timeimport threading live_ip = 0 def get_os(): os = platform.system() if os == "Windows": return "n" else: return "c" def ping_ip(ip_str): cmd = ["ping", "-{op}".format(op=get_os()), "1", ip_str] output = os.popen(" ".join(cmd)).readlines() for line in output: if str(line).upper().find("TTL") >= 0: print("ip: %s is ok ***" % ip_str) global live_ip live_ip += 1 break def find_ip(ip_prefix): ''''' 给出当前的127.0.0 ,然后扫描整个段所有地址 ''' threads = [] for i in range(1, 256): ip = '%s.%s' % (ip_prefix, i) threads.append(threading.Thread(target=ping_ip, args={ip, })) for i in threads: i.start() for i in threads: i.join() if __name__ == "__main__": print("start time %s" % time.ctime()) cmd_args = sys.argv[1:] args = "".join(cmd_args) ip_pre = '.'.join(args.split('.')[:-1]) find_ip(ip_pre) print("end time %s" % time.ctime()) print('本次扫描共检测到本网络存在%s台设备' % live_ip)
-
任务一:问题1:共3篇问题5:希望mindspore可以对python版本要求不那么严格,不是必须要求3.7.5,因为有些库暂无3.7.5支持,修改比较麻烦,希望能支持更多python版本,安装更方便。任务二1.实现一个图片分类应用2.实现简单线性函数拟合邮箱:ermaozi123456@163.com
-
那晚你错过的交流(PPT文末自取)那一晚,你没来第八期云享MindTalks,可能错过了一场精彩的对话交流~餐前小甜点助手小采访:你为什么选择用Python?因为语法简单?优雅?还是因为免费?:不,因为惜命,“人生苦短,我用Python”。暖心小贴士:Python的编写效率高,可以用Python省下的时间去植发哦。助手小采访:用Python你幸福吗?:我姓张。助手小采访:……,那可以请您简单分享一下Python的使用体验吗?:动态一时爽,一直动态一直爽。助手小采访:那是不是意味着这个工具很好用,妈妈再也不用担心我出bug的感觉?:什么BUG?!!暖心小贴士:动态一时爽,重构火葬场,这是动态语言的弊端。助手小采访:听说您之后又去学了Go?请用一句话证明。:err !=nil精彩正餐吃到饱交流者1号:Go的gorotine和Python的corotine区别?张老师:gorotine应该就是Go语言的协程,corotine是Python语言的协程,corontine是借鉴了JavaScript里的语法。协程你可以想象为轻量型的线程。交流者2号:我现在想修全栈向,Python用了三年,不会别的语言。一直在开脚本和API,想做点带前端的完整作品。未来趋势来看,是修炼react+go还是继续Python撸flask+django?张老师:谈点个人看法啊,Python用了三年说明你已经很熟悉Python了。从我自己的经历来说,我也是先学了Python然后又学习了Go,我觉得我们学点其他的知识,有助于拓宽我们的知识面,能够帮助到自己打开视野。react是Javascript的一个分支,一个框架,如果你想要修全栈的话,是可以学习一下的。现在react,vue比较主流,flask的话,目前不是那么的主流。交流者3号:Python使用uvloop的话,速度比Go如何?张老师:这个问题我没有实践过uvloop,无法给你做准确的判断,如果你用Python做一些底层的设计的话,能够对它进行一些优化,很可能会取得很好的效果。交流者4号:前端是vue还是react?如果时间有限的话。张老师:国内的话vue还是很多的,国外多是react,如果时间有限的话,建议学习vue,可以从3开始学;如果时间允许的话,建议两个都可以学着看看。交流者5号:Python转数据挖掘可以吗?不知道从何下手。张老师:如果你是用Python做数据分析,是完全可以转数据挖掘的。数据挖掘的话,还包含数据分析和机器学习的,Python的话,比较好的一点,就是有很多库都给你封装好了。如果说你能理解基础原理的话,完全是可以转的。交流者6号:Go和dart差不多吗?张老师:我知道移动端一个比较火的框架就是用dart语言写的,dart的话更多的可能会用于移动开发,相对来说Go的话使用的范围更广。交流者7号:老师是怎么学习Go的?张老师:总结下来的话,就是实践,“实践出真理”,我觉得我个人比较有效的学习方式就是通过实践,因为有Python的基础,经常做Python和go的对比,加强自己的理解,也更有意思。learn by doing是非常有效的学习方式。交流者8号:老师您的CrawLab从Python到Go重构了多久?张老师:重构了大概二十天左右,最近在着手做大的架构升级,预计明年初可以发版~Github: https://github.com/crawlab-team/crawlabDemo: https://demo-pro.crawlab.cn文档: https://docs.crawlab.cn欢迎大家来给我+star哦~谢谢交流者9号:请问有什么推荐的项目吗?张老师:推荐可以从小项目入手,比如: PPT: https://tinyurl.com/yd7gdf4k- 视频: https://www.bilibili.com/video/BV1Az4y1r7gE/- Go入门开源项目: 1. https://github.com/linxGnu/goseaweedfs 2. https://github.com/spf13/viper 3. https://github.com/crawlab-team/crawlab-go-sdk 4. https://github.com/jaeles-project/gospider学习资料推荐Python 基础 •https://github.com/jackfrued/Python-Core-50-Courses (中文) •https://github.com/learnbyexample/Python_Basics (英文) 进阶 《Python高性能编程》 - Micha Gorelick & Ian Ozsvald 《Python核心编程》 - Wesley Chun 《利用Python进行数据分析》 - Wes McKinney 《Python自然语言处理》 - Steven Bird, Ewan Klein & Edward Loper 《Python 3网络爬虫开发实战》 - 崔庆才 《Python 3网络爬虫宝典》 - 韦世东 极客时间《Python核心技术与实战》 -景霄Go 基础 掘金小册《基于 Go 语言构建企业级的 RESTful API 服务》 - 雷克斯 《Go语言核心编程》 - 李文塔 进阶 《Go语言实战》 - William Kennedy, Brian Ketelsen & Erik St. Martin 《Go语言高级编程》 - 柴树杉 &曹春晖更多精彩,敬请期待~扫码进微信群,仅限200人开始时间12月17日 20:00活动介绍云享MindTalks是由华为云DevCloud团队携手云享专家共同策划进行的系列技术交流活动。各业界大咖纷纷现身群聊,以即时对话形式,来进行最直接的技术交流和思想碰撞。不同领域的专家,各样的业界话题尽在此处,为保证极简极高效,活动仅20分钟,限量200人,先进先得。编程语言那么多那个才是你的心头好?是优雅简单的Python?还是高效精致的Go?动态与静态语言的选型之争,由张冶青老师带你全面分析! 专家介绍知名外企前端开发工程师神秘Night Team(夜幕团队)成员8年软件开发经验,全干工程师专注前端、爬虫和数据分析领域活动规则1.扫码加小助手入群聊,仅限200人,先到先得。2.对未能及时回复的问题,由助手收集集中回答。3.更多资源和活动请进入云享MindTalks VIP群。4.抽奖奖品为限定HE2E知识卡牌和老师推荐书籍 《Go语言核心编程》。
-
问题现象描述在安装昇腾解决方案C00商用版本软件栈toolkit包过程中,出现找不到grpc依赖库,导致toolkit包安装失败问题报错如下图所示:关键过程、根本原因分析定位过程:1.首先执行pip3.7 list,查看python安装依赖,发现可以查询到grpc相关依赖2.全局搜索grpc; 并查询grpc安装路径是否有HwHiAiUser用户访问权限,经确认,有访问权限:3. 在查询过程中,发现环境中有安装多个版本的python:python2.7、python3.5、python3.7以及python3.7.5;相关依赖安装在了python3.7.5下面(使用python3.7.5调用),无法使用其它版本python调用相关依赖。但toolkit工具包安装时,会校验python3.7命令下的依赖安装情况,所以安装失败问题结论:环境中安装了多个版本的python(python3.7和python3.7.5),分别可以通过python3.7和python3.7.5命令访问;toolkit安装是使用python3.7访问python并校验相关依赖的,而环境中把所有依赖都安装到了python3.7.5下面,导致toolkit安装查询不到依赖解决方法:删除环境下python3.7链接,将python3.7与python3.7.5指向到同一个python依赖库路径下(环境中安装所有依赖的路径)
-
# 发邮件的库 import smtplib #邮件文本 from email.mime.text import MIMEText # smtp服务器 SMTPServer ="smtp.126.com" # 发邮件的地址 Sender = "****@126.com" #发送者邮箱的密码 这里是在网易邮箱的设置菜单栏获取的授权码 passwd = "*******************" # 设置发送的内容 message = "hello world! " # 转换成邮件文本 msg = MIMEText(message) # 标题 msg["Subject"] = "来自python的问候" #发送者 msg["From"] = Sender # 创建SMTP服务器 服务器 端口号 mailServer = smtplib.SMTP(SMTPServer, 25) #登录邮箱 mailServer.login(Sender, passwd) # 发送邮件 mailServer.sendmail(Sender, ["******@dingtalk.com"],msg.as_string()) # 退出邮箱 mailServer.quit()一开始想用最常用的OA邮箱测试,发现发不了,提示TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。想了下,推测是由于护网行动,OA断掉了外网的访问权限可能有关系。重新用126.com账号测试,授权码需要在网易的邮件设置栏里面找,发送短信验证后获得。
-
对于python语言的True和False我们并不陌生了,在学习的过程中常会遇到这样的返回值,那么True真和False假的具体含义是什么?本文就为大家来说说python中真假的含义。真和假的概念同许多程序语言一样,python中真假也是可以用整数0和1来表示,整数0表示假,整数1表示真。其实真和是python每个对象都具体的一种属性,这种属性不是真就是假。在python中一切都是对象,像是数据结构,python视空的数据结构为False假,相反不是空的数据结构则为True真。下面来看下python中对象真、假值的示例1234567"spam" True"" False[] False{} False1 True0.0 FalseNone FalseNone的作用上图示例中最后的None,会被认为是False,其实它是python中一个特殊的对象,一种特殊数据类型的唯一值,作用和C语言中的null比较像,起到空的占位作用。如下所示:1234567x = [None]*100>>> x [None, None, None, None, None, None,...] >>> >>> x[2]='a'>>> x [None, None, 'a', None, None, None,...]None起到了一个占位作用,过后可以通过索引赋值来替换内容。从这个例子中可以看出,None并不是没有内容,它是一个真正对的象,它在python中还有其它用法。要想真的明白Python语言中真和假的含义,更多的是需要理解,要多操作编写代码是对理解非常有帮助的。补充知识:python中True,False与0,1之间的关系demo112345678>>> print(True == 1)>>> print(True == 2)>>> print(False == 0)>>> print(False == 2)TrueFalseTrueFalse这说明1与True,0与False在python来说是完全相等的东西。demo2123456>>> x = 5>>> if x%2:>>> x += 1>>> else:>>> x -= 1>>> print(x)在demo2中可以看出二者之间关系的妙用。x%2=0 <——> x%2 = True
-
前言有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出。注意,自定义异常只能由自己抛出。python解释器是不知道用户自定义异常是什么鬼的。raise语句主动抛出异常。格式:主动抛出异常终止程序raise 异常名称(‘异常描述')raise RuntimeError('testError')主动抛出这个异常,并加以解释。自定义异常python的异常分为两种.1、内建异常,就是python自己定义的异常。2、不够用,用户自定义异常,首先看看python的异常继承树我们可以看到python的异常有个大基类。然后继承的是Exception。所以我们自定义类也必须继承Exception。123#最简单的自定义异常class FError(Exception): pass抛出异常、用try-except抛出1234try: raise FError("自定义异常")except FError as e: print(e)在这里给一个简单的自定义异常类模版。123456789101112class CustomError(Exception): def __init__(self,ErrorInfo): super().__init__(self) #初始化父类 self.errorinfo=ErrorInfo def __str__(self): return self.errorinfo if __name__ == '__main__': try: raise CustomError('客户异常') except CustomError as e: print(e)补充知识:Python自定义异常及常见异常类型对于try…except…else…finally123456789101112131415161718192021222324def self_error(type_list): """异常处理函数 传入一个可迭代对象,处理参数传入错误情况 :paramtype_list:一个可迭代对象 """ try: for i in type_list: print(i) except: print("不是可迭代对象") else: print("没有发生错误") finally: print("程序运行结束")self_error("abc")"""abc没有发生错误程序运行结束"""self_error(2)"""不是可迭代对象程序运行结束"""由程序可以看出如果try部分顺利执行,则会执行else部分,如果try部分出现错误则会执行except部分,但是两种情况最后都输出了finally部分。当然,else和finally部分是可以省略的。我们可以自定义输出错误类型,需要用到raise函数。1234567891011121314def self_error(type_num): """异常处理函数 自定义异常函数,用于抛出异常 :paramtype_num:用于判断是否抛出异常的值 :return 异常信息 """ if type_num<10: raise ValueError("取值小于10") else: return 200 if __name__=="__main__": self_error(11) #200 self_error(9) #ValueError: 取值小于10raise抛出异常只适用于python的标准异常类异常名称 描述ArithmeticError 所有数值计算错误的基类AssertionError 断言语句失败AttributeError 对象没有这个属性BaseException 所有异常的基类DeprecationWarning 关于被弃用的特征的警告EnvironmentError 操作系统错误的基类EOFError 没有内建输入,到达EOF 标记Exception 常规错误的基类FloatingPointError 浮点计算错误FutureWarning 关于构造将来语义会有改变的警告GeneratorExit 生成器(generator)发生异常来通知退出ImportError 导入模块/对象失败IndentationError 缩进错误IndexError 序列中没有没有此索引(index)IOError 输入/输出操作失败KeyboardInterrupt 用户中断执行(通常是输入^C)KeyboardInterrupt 用户中断执行(通常是输入^C)KeyError 映射中没有这个键LookupError 无效数据查询的基类MemoryError 内存溢出错误(对于Python 解释器不是致命的)NameError 未声明/初始化对象 (没有属性)NotImplementedError 尚未实现的方法OSError 操作系统错误OverflowError 数值运算超出最大限制OverflowWarning 旧的关于自动提升为长整型(long)的警告PendingDeprecationWarning 关于特性将会被废弃的警告ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象RuntimeError 一般的运行时错误RuntimeWarning 可疑的运行时行为(runtime behavior)的警告StandardError 所有的内建标准异常的基类StopIteration 迭代器没有更多的值SyntaxError Python 语法错误SyntaxWarning 可疑的语法的警告SystemError 一般的解释器系统错误SystemExit 解释器请求退出SystemExit Python 解释器请求退出TabError Tab 和空格混用TypeError 对类型无效的操作UnboundLocalError 访问未初始化的本地变量UnicodeDecodeError Unicode 解码时的错误UnicodeEncodeError Unicode 编码时错误UnicodeError Unicode 相关的错误UnicodeTranslateError Unicode 转换时错误UserWarning 用户代码生成的警告ValueError 传入无效的参数Warning 警告的基类WindowsError 系统调用失败ZeroDivisionError 除(或取模)零 (所有数据类型)
-
### 配置yum源 1. 上传系统安装镜像文件 CentOS-7.6-x86_64-DVD-1810.iso 到客户端节点,例如/opt目录 2. 将镜像文件挂载到/media目录 ``` mount -o loop /opt/CentOS-7.6-x86_64-DVD-1810.iso /media ``` 3. 配置/etc/yum.repos.d/目录下的repo文件,保证该目录下只有一个以.repo结尾的文件,其内容如下 ``` [base] name=file baseurl=file:///media enabled=1 gpgcheck=0 ``` 4. 配置完毕后检查下yum源,如图执行yum repolist命令  ### 安装python3 从python官网下载python3源码包,本例中下载的链接为 https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz 将获取的Python-3.7.8.tgz上传到/opt目录下,安装命令如下 ``` yum -y install zlib-devel bzip2-devel openssl-devel openssl-static ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libcap-devel xz-devel libffi-devel lzma gcc cd /opt rm -rf /tmp/Python-3.7.8 tar -zxvf Python-3.7.8.tgz -C /tmp mv /tmp/Python-3.7.8 /usr/local/python-3.7 cd /usr/local/python-3.7/ ./configure --prefix=/usr/local/sbin/python-3.7 make && make install ln -sv /usr/local/sbin/python-3.7/bin/python3 /usr/bin/python3 ln -sv /usr/local/sbin/python-3.7/bin/pip3 /usr/bin/pip3 ``` ## 批量安装 当一个集群有上百台、上千台节点时,我们如果按上面步骤一台一台安装就比较慢了,可以使用FusionInsight_SetupTool里的批量操作工具来安装 ### 前置条件 - 在安装操作系统时所有节点需安装gcc、make、cmake工具; - 所有节点已开启sshd服务,且已获取root用户和密码,所有节点root用户密码建议配置相同 - 已将Python-3.7.8.tgz上传到主OMS节点的/opt目录下 - 已将版本包中的 FusionInsight_SetupTool-*.tar.gz上传到/opt目录,其中*对应使用的版本号 ### 安装步骤 以root用户登录OMS节点执行 1. 解压缩 FusionInsight_SetupTool-*.tar.gz ``` tar -zxvf FusionInsight_SetupTool-*.tar.gz ``` 2. 进入“/opt/FusionInsight_SetupTool/preinstall/tools/cluster”目录,编辑“cluster.ini”文件,样例如下 其中g_hosts表示所有主机IP地址,支持范围写入,例如192.168.10.[2-10] ``` g_hosts="190.222.20.123,190.222.20.136,190.222.20.185" g_user_name="root" g_password="" g_port=22 g_timeout=500 ``` 3. 将python3安装包上传到所有节点 命令参考 ``` cd /opt/FusionInsight_SetupTool/preinstall/tools/cluster ./clusterscp.sh put /opt/Python-3.7.8.tgz /opt ``` 4. 将所有节点的python3安装包解压缩 ``` ./clustercmd.sh "tar -zxf /opt/Python-3.7.8.tgz -C /opt" ``` 5. 所有节点编译安装python3 ``` ./clustercmd.sh "cd /opt/Python-3.7.8 && ./configure --prefix=/usr/local/python3 && make && make install && ln -s /usr/local/python3/bin/python3.7.8 /usr/bin/python3 && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3" ```
-
目的在各种各样的理论计算中,常常需要绘制各种填充图,绘制完后需要加渐变填充的colorbar。可是有些软件如VMD,colorbar渲染后颜色分布有些失真,不能较准确的表达各颜色对应的数值。用ps中的渐变填充可以解决该问题,但很多电脑配置较低,不能很好的运行ps。Python也可以直接绘制colorbar,填充颜色就好。如cmap中的bwr渐变本人就比较常用。然而,有时候颜色范围是负数范围多于正数范围(如:colorbar需要表示 [-60,40]这段,蓝色表示负数,红色表示正数,白色应该在colorbar由下往上60%处),bwr渐变将white置于50%处显得不够合理,因此需要自定义填充。本文以imshow() 函数来进行填充柱状图达到自定义colorbar的目的。interpolation=‘bicubic' 可以很好的做出渐变效果。代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455# -*- coding: utf-8 -*-"""Created on Wed Dec 9 10:36:54 2020 @author: fya""" import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.colors import ListedColormap,LinearSegmentedColormapimport matplotlib as mpl fig, ax = plt.subplots(dpi=96)ax.set(xlim=(1,10), ylim=(-0.1,101), autoscale_on=False) #创建图像范围 a = np.array([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]) #每种渐变色分成五段(array五行),数字表示在colormap对应的深浅print(a.shape) clist=['white','blue'] #线性变化颜色由上面array值 小到大,越小,越白,达到上白下蓝的渐变效果clist2=['red','white'] #渐变色2,用于白色到红色填充,array越小,越红,达到上红下白的效果newcmp = LinearSegmentedColormap.from_list('chaos',clist)newcmp2 = LinearSegmentedColormap.from_list('chaos',clist2) plt.imshow(a,cmap=newcmp,interpolation='bicubic',extent=(1,10,0,60))#60%都是蓝色到白色渐变plt.imshow(a,cmap=newcmp2,interpolation='bicubic',extent=(1,10,60,100)) #白色设置在60%处 frame = plt.gca() #读取当前图层ax.yaxis.tick_right() #纵坐标移到右边ax.set_yticklabels(('-80','-60','-40','-20','0','20','40')) #自定义yticks显示的值,第一个label不显示frame.spines['top'].set_visible(False) #上框线不显示frame.spines['bottom'].set_visible(False)frame.spines['right'].set_visible(False)frame.spines['left'].set_visible(False)plt.xticks([]) #x坐标不要 plt.show()fig.savefig('colorbar.tif',dpi=600,format='tif')print('Done!') #N = 10#x = np.arange(N) + 0.15#y = np.random.rand(N) #width = 0.4#for x, y in zip(x, y): #ax.imshow(a, interpolation='bicubic', extent=(x, x+width, 0, y), cmap=plt.cm.Blues_r) #ax.set_aspect('auto')#plt.show()代码2,渐变色分100段123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475# -*- coding: utf-8 -*-"""Created on Wed Dec 9 10:36:54 2020 @author: fanyiang""" import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.colors import ListedColormap,LinearSegmentedColormapimport matplotlib as mplimport pandas as pdimport os fig, ax = plt.subplots(dpi=96)ax.set(xlim=(1,10), ylim=(-0.1,101), autoscale_on=False) #a = np.array([[1, 1], #[2, 2], #[3, 3], #[4, 4], #[5, 5]]) #每种渐变色分成五段(array五行),数字表示在colormap对应的深浅avalue=locals()dfvalue=locals() for i in range(1,101): avalue['a'+str(i)]=np.array([[i,i]]) #渐变色分为100段,分的更细 dfvalue['df'+str(i)]=pd.DataFrame(avalue['a'+str(i)]) #转dataframe df=dfvalue['df'+str(i)] df.to_csv("temp.csv", mode='a',header=None) #暂存csv文件,第一列会把每一次循环的index放进去df3=pd.read_csv('temp.csv',header=None)#读取csvdf3.columns=['序号','x','y']#column命名,第一列废弃df3=df3.drop('序号',axis=1)#删除第一列a=np.array(df3) #转arrayprint(df3.head()) #a=np.vstack((a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)) print(a) clist=['white','blue'] #线性变化颜色由上面array值 小到大clist2=['red','white']newcmp = LinearSegmentedColormap.from_list('chaos',clist)newcmp2 = LinearSegmentedColormap.from_list('chaos',clist2) plt.imshow(a,cmap=newcmp,interpolation='bicubic',extent=(1,10,0,60))plt.imshow(a,cmap=newcmp2,interpolation='bicubic',extent=(1,10,60,100)) #白色设置在60%处 frame = plt.gca() #读取当前图层ax.yaxis.tick_right() #纵坐标移到右边ax.set_yticklabels(('-80','-60','-40','-20','0','20','40')) #自定义yticks显示的值,第一个label不显示frame.spines['top'].set_visible(False) #上框线不显示frame.spines['bottom'].set_visible(False)frame.spines['right'].set_visible(False)frame.spines['left'].set_visible(False)plt.xticks([]) #x坐标不要 plt.show()fig.savefig('colorbar.tif',dpi=600,format='tif')os.remove("temp.csv") #删除临时的csv文件print('Done!') #N = 10#x = np.arange(N) + 0.15#y = np.random.rand(N) #width = 0.4#for x, y in zip(x, y): #ax.imshow(a, interpolation='bicubic', extent=(x, x+width, 0, y), cmap=plt.cm.Blues_r) #ax.set_aspect('auto')#plt.show()效果效果1效果2
-
一.python实现ping返回延迟繁琐版123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107#!/usr/bin/python3.7# !coding:utf-8__author__ = 'hsz'__date__ = 'Thu Feb 27 22:41:15 EST 2020' import timeimport structimport socketimport selectimport sys def chesksum(data): """ 校验 """ n = len(data) m = n % 2 sum = 0 for i in range(0, n - m, 2): sum += (data[i]) + ((data[i + 1]) << 8) # 传入data以每两个字节(十六进制)通过ord转十进制,第一字节在低位,第二个字节在高位 if m: sum += (data[-1]) # 将高于16位与低16位相加 sum = (sum >> 16) + (sum & 0xffff) sum += (sum >> 16) # 如果还有高于16位,将继续与低16位相加 answer = ~sum & 0xffff # 主机字节序转网络字节序列(参考小端序转大端序) answer = answer >> 8 | (answer << 8 & 0xff00) return answer ''' 连接套接字,并将数据发送到套接字 ''' def raw_socket(dst_addr, imcp_packet): rawsocket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.getprotobyname("icmp")) send_request_ping_time = time.time() # send data to the socket rawsocket.sendto(imcp_packet, (dst_addr, 80)) return send_request_ping_time, rawsocket, dst_addr ''' request ping ''' def request_ping(data_type, data_code, data_checksum, data_ID, data_Sequence, payload_body): # 把字节打包成二进制数据 imcp_packet = struct.pack('>BBHHH32s', data_type, data_code, data_checksum, data_ID, data_Sequence, payload_body) icmp_chesksum = chesksum(imcp_packet) # 获取校验和 imcp_packet = struct.pack('>BBHHH32s', data_type, data_code, icmp_chesksum, data_ID, data_Sequence, payload_body) return imcp_packet ''' reply ping ''' def reply_ping(send_request_ping_time, rawsocket, data_Sequence, timeout=2): while True: started_select = time.time() what_ready = select.select([rawsocket], [], [], timeout) wait_for_time = (time.time() - started_select) if what_ready[0] == []: # Timeout return -1 time_received = time.time() received_packet, addr = rawsocket.recvfrom(1024) icmpHeader = received_packet[20:28] type, code, checksum, packet_id, sequence = struct.unpack( ">BBHHH", icmpHeader ) if type == 0 and sequence == data_Sequence: return time_received - send_request_ping_time timeout = timeout - wait_for_time if timeout <= 0: return -1 ''' 实现 ping 主机/ip ''' def ping(host): data_type = 8 # ICMP Echo Request data_code = 0 # must be zero data_checksum = 0 # "...with value 0 substituted for this field..." data_ID = 0 # Identifier data_Sequence = 1 # Sequence number payload_body = b'abcdefghijklmnopqrstuvwabcdefghi' # data dst_addr = socket.gethostbyname(host) # 将主机名转ipv4地址格式,返回以ipv4地址格式的字符串,如果主机名称是ipv4地址,则它将保持不变 print("正在 Ping {0} [{1}] 具有 32 字节的数据:".format(host, dst_addr)) for i in range(0, 4): icmp_packet = request_ping(data_type, data_code, data_checksum, data_ID, data_Sequence + i, payload_body) send_request_ping_time, rawsocket, addr = raw_socket(dst_addr, icmp_packet) times = reply_ping(send_request_ping_time, rawsocket, data_Sequence + i) if times > 0: print("来自 {0} 的回复: 字节=32 时间={1}ms".format(addr, int(times * 1000))) time.sleep(0.7) else: print("请求超时。") if __name__ == "__main__": # if len(sys.argv) < 2: # sys.exit('Usage: ping.py <host>') ping('www.baidu.com') # sys.argv[1]二 .python实现ping返回延迟简单版本12345678910111213141516171819from ping3 import ping def ping_host(ip): """ 获取节点的延迟的作用 :param node: :return: """ ip_address = ip response = ping(ip_address) print(response) if response is not None: delay = int(response * 1000) print(delay, "延迟") # 下面两行新增的 ping_host('www.baidu.com')
-
## 一、测试环境说明 FusionInsight集群:版本8.0.2 开启安全模式 客户端系统类型:CentOS Linux release 7.6.1810 x86_64位 集群和客户端均位于无法连接互联网的内网环境 ## 二、配置步骤 **本章节所有步骤在客户端节点执行** ### 2.1 配置yum源 已有可用yum源的可忽略2.1章节 1. 上传系统安装镜像文件 CentOS-7.6-x86_64-DVD-1810.iso 到客户端节点,例如/opt目录 2. 将镜像文件挂载到/media目录 ``` mount -o loop /opt/CentOS-7.6-x86_64-DVD-1810.iso /media ``` 3. 配置/etc/yum.repos.d/目录下的repo文件,保证该目录下只有一个以.repo结尾的文件,其内容如下 ``` [base] name=file baseurl=file:///media enabled=1 gpgcheck=0 ``` 4. 配置完毕后检查下yum源,如图执行yum repolist命令  ### 2.2 安装python3 从python官网下载python3源码包,本例中下载的链接为 https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz 将获取的Python-3.7.8.tgz上传到/opt目录下,安装命令如下 ``` yum -y install zlib-devel bzip2-devel openssl-devel openssl-static ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libcap-devel xz-devel libffi-devel lzma gcc cd /opt rm -rf /tmp/Python-3.7.8 tar -zxvf Python-3.7.8.tgz -C /tmp mv /tmp/Python-3.7.8 /usr/local/python-3.7 cd /usr/local/python-3.7/ ./configure --prefix=/usr/local/sbin/python-3.7 make && make install ln -sv /usr/local/sbin/python-3.7/bin/python3 /usr/bin/python3 ln -sv /usr/local/sbin/python-3.7/bin/pip3 /usr/bin/pip3 ``` ### 2.3 安装kafka-python **说明:安装该依赖之前切记不可执行 FusionInsight 客户端环境变量,即不能执行 source /opt/client/bigdata_env** 附件中的安装包都是从pypi官网下载,可直接使用,或者到pypi下载 ***<u>切记:如下依赖包的安装顺序必须是 six > decorator > gssapi > kafka-python</u>*** 1. 获取依赖包,pypi下载链接如下 six https://pypi.org/project/six/#files decorator https://pypi.org/project/decorator/#files gssapi https://pypi.org/project/gssapi/#files kafka-python https://pypi.org/project/kafka-python/#files 2. 安装依赖six ``` tar -zxvf six-1.15.0.tar.gz cd six-1.15.0 python3 setup.py install ``` 3. 安装decorator ``` tar -zxvf decorator-4.4.2.tar.gz cd decorator-4.4.2 python3 setup.py install ``` 4. 安装gssapi ``` tar -zxvf gssapi-1.6.11.tar.gz cd gssapi-1.6.11 python3 setup.py install ``` 5. 安装kafka-python ``` tar -zxvf kafka-python-2.0.2.tar.gz cd kafka-python-2.0.2 python3 setup.py install ``` ### 2.4 安装FusionInsight客户端 本步骤略,客户端安装目录自定义,例如/opt/client ## 三、验证 ### 3.1 执行kerberos认证 参考命令 ``` source /opt/client/bigdata_env kinit -k -t user.keytab developuser ``` ### 3.2 创建python测试脚本,内容参考如下 注意bootstrap_servers和sasl_kerberos_domain_name根据实际环境进行修改 ``` #!/usr/bin/env python3 # coding=utf-8 import time from kafka import KafkaProducer from kafka import KafkaConsumer def kafka_python_producer_main(): producer = KafkaProducer(bootstrap_servers='10.162.26.137:21007', security_protocol='SASL_PLAINTEXT', sasl_mechanism='GSSAPI', sasl_kerberos_service_name='kafka', sasl_kerberos_domain_name='hadoop.hadoop.com', sasl_plain_username='KafkaClient') producer.send('testTopic3', 'kafka python test'.encode('utf-8')) producer.flush() producer.close() print('producer done') def kafka_python_consumer_main(): consumer = KafkaConsumer('testTopic3', bootstrap_servers='10.162.26.137:21007', group_id='kafka-test-20191014', auto_offset_reset='earliest', security_protocol='SASL_PLAINTEXT', sasl_mechanism='GSSAPI', sasl_kerberos_service_name='kafka', sasl_kerberos_domain_name='hadoop.hadoop.com', sasl_plain_username='KafkaClient') for msg in consumer: print(msg.value) print(msg.partition) print('consumer done') if __name__ == '__main__': kafka_python_producer_main() time.sleep(1) kafka_python_consumer_main() ``` 3.3 执行测试脚本,查看执行结果  通过kafka自带脚本验证结果:  ## 更多kafka-python使用参考: https://kafka-python.readthedocs.io/en/master/usage.html
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签