我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于Python 代码全面分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于Python 代码全面分析

  欢迎各位阅读本篇,Python(KK 英语发音:/ˈpaɪθən/)是一种面向对象、直译式计算机程序设计语言。本篇文章讲述了关于Python 代码全面分析。

  Python概要介绍

  Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成为最受欢迎的程序设计语言之一。

  2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,python的使用率是呈线性增长。

  由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程。

  例如麻省理工学院的计算机科学及编程导论课程就使用Python语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。

  而Python专用的科学计算扩展库就更多了,例如如下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。

  说起科学计算,首先会被提到的可能是MATLAB。然而除了MATLAB的一些专业性很强的工具箱还无法替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相应的扩展库。和MATLAB相比,用Python做科学计算有如下优点:

  ● 首先,MATLAB是一款商用软件,并且价格不菲。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户可以在任何计算机上免费安装Python及其绝大多数扩展库。

关于Python 代码全面分析_计算机_数据库_Python_编程学习网教育

  Python LOGO● 其次,与MATLAB相比,Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。

  ● 最后,MATLAB主要专注于工程和科学计算。然而即使在计算领域,也经常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。

开发者可以用Python实现完整应用程序所需的各种功能。

  最近写了较多的 Python 脚本,将最近自己写的脚本进行一个总结,其中有些是 Python 独有的,有些是所有程序设计中共有的:

  考虑使用 Logger(logger 怎么配置,需要输出哪些信息 — 可以反向考虑,自己看到这个 logger 的时候想了解什么信息)

  传递的数据结构如何考虑(是否对调用方有先验知识的要求,比如返回一个 Tuple,则需要用户了解 tuple 中元素的顺序,这样情况是否应该进行封装;),数据结构定义清楚了,很多东西也就清楚了。

  如何操作数据库(可以学习 sqlalchemy,包括 core 和 orm 两种 api)

  异常如何处理(异常应该分开捕获 — 可以清楚的知道什么情况下导致的,异常之后应该打印日志说明出现什么问题,如果情况恶劣需要进行异常再次抛出或者报警)

  所有获取资源的地方都应该做 check(a. 没有获取到会怎么办;b.获取到异常的怎么办)

  所有操作资源的地方都应该检查是否操作成功

  每个函数都应该简短,如果函数过长应该进行拆分(有个建议值,函数包含的行数应该在 20-30 行之间,具体按照这个规范做过一次之后就会发现这样真好)

  使用 class 之后,考虑重构 __str__ 函数,用户打印输出(如果不实现 __str__,会调用 __repr__ ),如果对象放到 collection 中之后,需要实现 __repr__ 函数,用于打印整个 collection 的时候,直观显示

  如果有些资源会发生变化,可以单独抽取出来,做成函数,这样后续调用就可以不用改变了

  附上一份 Python2.7 代码(将一些私有的东西进行了修改)

  # -*- coding:utf-8 -*-

  from sqlalchemy import create_engine

  import logging

  from logging.config import fileConfig

  import requests

  import Clinet # 私有的模块

  fileConfig("logging_config.ini")

  logger = logging.getLogger("killduplicatedjob")

  #配置可以单独放到一个模块中

  DB_USER = "xxxxxxx"

  DB_PASSWORD = "xxxxxxxx"

  DB_PORT = 111111

  DB_HOST_PORT = "xxxxxxxxxx"

  DB_DATA_BASE = "xxxxxxxxxxx"

  REST_API_URL = "http://sample.com"

  engine = create_engine("MySQL://%s:%s@%s:%s/%s" % (DB_USER, DB_PASSWORD, DB_HOST_PORT, DB_PORT, DB_DATA_BASE))

  # 这个 class 是为了在函数间传递时,不需要使用方了解属性的具体顺序而写的,也可以放到一个单独的模块中

  class DuplicatedJobs(object):

  def __init__(self, app_id, app_name, user):

  self.app_id = app_id

  self.app_name = app_name

  self.user = user

  def __repr__(self):

  return '[appid:%s, app_name:%s, user:%s]' % (self.app_id, self.app_name, self.user)

  def find_duplicated_jobs():

  logger.info("starting find duplicated jobs")

  (running_apps, app_name_to_user) = get_all_running_jobs()

  all_apps_on_yarn = get_apps_from_yarn_with_queue(get_resource_queue())

  duplicated_jobs = []

  for app in all_apps_on_yarn:

  (app_id, app_name) = app

  if app_id not in running_apps:

  if not app_name.startswith("test"):

  logger.info("find a duplicated job, prefixed_name[%s] with appid[%s]" % (app_name, app_id))

  user = app_name_to_user[app_name]

  duplicated_jobs.append(DuplicatedJobs(app_id, app_name, user))

  else:

  logger.info("Job[%s] is a test job, would not kill it" % app_name)

  logger.info("Find duplicated jobs [%s]" % duplicated_jobs)

  return duplicated_jobs

  def get_apps_from_yarn_with_queue(queue):

  param = {"queue": queue}

  r = requests.get(REST_API_URL, params=param)

  apps_on_yarn = []

  try:

  jobs = r.json().get("apps")

  app_list = jobs.get("app", [])

  for app in app_list:

  app_id = app.get("id")

  name = app.get("name")

  apps_on_yarn.append((app_id, name))

  except Exception as e: #Exception 最好进行单独的分开,针对每一种 Exception 进行不同的处理

  logger.error("Get apps from Yarn Error, message[%s]" % e.message)

  logger.info("Fetch all apps from Yarn [%s]" % apps_on_yarn)

  return apps_on_yarn

  def get_all_running_jobs():

  job_infos = get_result_from_mysql("select * from xxxx where xx=yy")

  app_ids = []

  app_name_to_user = {}

  for (topology_id, topology_name) in job_infos:

  status_set = get_result_from_mysql("select * from xxxx where xx=yy")

  application_id = status_set[0][0]

  if "" != application_id:

  configed_resource_queue = get_result_from_mysql(

  "select * from xxxx where xx=yy")

  app_ids.append(application_id)

  app_name_to_user[topology_name] = configed_resource_queue[0][0].split(".")[1]

  logger.info("All running jobs appids[%s] topology_name2user[%s]" % (app_ids, app_name_to_user))

  return app_ids, app_name_to_user

  def kill_duplicated_jobs(duplicated_jobs):

  for job in duplicated_jobs:

  app_id = job.app_id

  app_name = job.app_name

  user = job.user

  logger.info("try to kill job[%s] with appid[%s] for user[%s]" % (app_name, app_id, user))

  try:

  Client.kill_job(app_id, user)

  logger.info("Job[%s] with appid[%s] for user[%s] has been killed" % (app_name, app_id, user))

  except Exception as e:

  logger.error("Can't kill job[%s] with appid[%s] for user[%s]" % (app_name, app_id, user))

  def get_result_from_mysql(sql):

  a = engine.execute(sql)

  return a.fetchall()

  # 因为下面的资源可能发生变化,而且可能包含一些具体的逻辑,因此单独抽取出来,独立成一个函数

  def get_resource_queue():

  return "xxxxxxxxxxxxx"

  if __name__ == "__main__":

  kill_duplicated_jobs(find_duplicated_jobs())

  其中 logger 配置文件如下(对于 Python 的 logger,官方文档写的非常好,建议读一次,并且实践一次)

  [loggers]

  keys=root, simpleLogger

  [handlers]

  keys=consoleHandler, logger_handler

  [formatters]

  keys=formatter

  [logger_root]

  level=WARN

  handlers=consoleHandler

  [logger_simpleLogger]

  level=INFO

  handlers=logger_handler

  propagate=0

  qualname=killduplicatedjob

  [handler_consoleHandler]

  class=StreamHandler

  level=WARN

  formatter=formatter

  args=(sys.stdout,)

  [handler_logger_handler]

  class=logging.handlers.RotatingFileHandler

  level=INFO

  formatter=formatter

  args=("kill_duplicated_streaming.log", "a", 52428800, 3,)

  [formatter_formatter]

  format=%(asctime)s %(name)-12s %(levelname)-5s %(message)s

也许最初设计Python这种语言的人并没有想到Python会在工业和科研上获得如此广泛的使用。

  小结:Python的名字来源于一个喜剧。也许最初设计Python这种语言的人并没有想到Python会在工业和科研上获得如此广泛的使用。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于Python 代码全面分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于Python 代码全面分析

欢迎各位阅读本篇,Python(KK 英语发音:/ˈpaɪθən/)是一种面向对象、直译式计算机程序设计语言。本篇文章讲述了关于Python 代码全面分析。
关于Python 代码全面分析
2024-04-23

关于TensorFlow全面分析

欢迎各位阅读本篇,TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。本篇文章讲述了关于TensorFlow全面分析,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
关于TensorFlow全面分析
2024-04-23

Python相关问题代码分析

这篇文章主要介绍“Python相关问题代码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python相关问题代码分析”文章能帮助大家解决问题。1、反射算术运算符你可能知道 Python 里面的魔
2023-07-06

Python 关于日志的分析

项目情况介绍:基于Python 3.6.6 ,实现对nginx访问的日志分析代码,实现了对日志中code的占比统计和浏览器类型和访问情况统计实现的代码段有:1.编写窗户函数,实现在一定的时间内对数据进行分析2.通过正则表达式对日志进行匹配,
2023-01-31

求关于Bolt界面引擎代码

Bolt是一款基于Unity的可视化编程工具,通过拖拽和连接节点来创建游戏逻辑。Bolt界面引擎的代码主要包括以下几个部分:1. 节点类:Bolt中的节点分为控制节点、运算节点、事件节点等,每个节点都有对应的类来实现。节点类通常继承自Bol
2023-09-08

全面分析Python与Unicode

您对大数据是否非常了解,您是否了解大数据的所有,您是否已经非常了解大数据呢?您知道大数据里的Python与Unicode,如果您觉得大数据非常重要,不管您是否真的非常了解大数据还是不了解大数据。请好好阅读本篇文章吧,本篇文章带你了解大数据中Python与Unicode。编程学习网教育提醒您:要仔细阅读哦~~
全面分析Python与Unicode
2024-04-23

关于IP代理的示例分析

小编给大家分享一下关于IP代理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!IP协议提供的IP地址是一个统一的地址格式。IP软件为因特网上的每个网络和主
2023-06-15

python皮尔逊相关性数据分析分析及实例代码

这篇文章主要为大家介绍了python皮尔逊相关性分析及实例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-15

Python实例代码分析

这篇“Python实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python实例代码分析”文章吧。1.交换两个变
2023-06-27

关于dns密码的问题分析

关于dns密码的问题分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。小弟一直以来都在寻找关于DNS配置,无奈很多资料都是过时的,特别关于KEY和RNDC的部分
2023-06-13

关于Jar包部署命令全面解析

这篇文章主要介绍了Jar包部署命令全面解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

Python代码分析工具:PyCheck

1 概述PyChecker是Python代码的静态分析工具,它能够帮助查找Python代码的bug,而且能够对代码的复杂度和格式等提出警告。PyChecker可以工作在多种方式之下。首先,PyChecker会导入所检查文件中包含的模块,检查
2023-01-31

spark编程python代码分析

今天小编给大家分享一下spark编程python代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。spark编程pyth
2023-07-05

TS面试题实例代码分析

本篇内容主要讲解“TS面试题实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TS面试题实例代码分析”吧!第一层的要求是这样的:实现一个 zip 函数,对两个数组的元素按顺序两两合并,比
2023-07-05

编程热搜

  • Mysql分表查询海量数据和解决方案
    众所周知数据库的管理往往离不开各种的数据优化,而要想进行优化通常我们都是通过参数来完成优化的。那么到底这些参数有哪些呢?为此在本篇文章中编程学习网笔者就为大家简单介绍MySQL,以供大家参考参考,希望能帮助到大家。以上就是关于大数据的知识点了。喜欢的可以分享给你的朋友,也可以点赞噢~更多内容,就在编程学习网!
    Mysql分表查询海量数据和解决方案
  • 大数据的妙用及17年趋势
    2017年,支持大量结构化和非结构化数据的系统将继续增长。市场需要数据平台来帮助数据管理人员管理和保护大数据,同时允许最终用户进行数据分析。这些系统将逐步成熟,在企业内部的IT系统中更好地运行。所以,我们更要了解大数据!互联网普及使得网民的行为更加多元化,通过互联网产生的数据发展更加迅猛,更具代表性。互联网世界中的商品信息、社交媒体中的图片、文本信息以及视频网站的视频信息,互联网世界中的人与人交互信息、位置信息等,都已经成为大数据的最重要也是增长最快的来源。大家都了解到了吗!更多内容就在编程学习网哟
    大数据的妙用及17年趋势
  • 5G大数据时代空降来袭
    欢迎各位阅读本篇文章,本文主要讲了5G大数据时代。如今 5G 概念已不再陌生,按照行业认同的说法:2017年至2018年 5G 将在国内开始有序测试,2019年进行预商用。工信部之前已表示,中国将在2020年启动 5G 商用。编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    5G大数据时代空降来袭
  • es详解-原理-从图解构筑对es原理的初步认知
    在学习ElasticSearch原理时,我推荐你先通过官方博客中的一篇图解文章(虽然是基于2.x版本)来构筑对ES的初步认知(这种认识是体系上的快速认知)。ES详解 - 原理:从图解构筑对ES原理的初步认知前言图解ElasticSearch图解LuceneSegmentInverted IndexStored Fiel
    es详解-原理-从图解构筑对es原理的初步认知
  • elasticsearch-wrapperquery
    在工作中遇到ElasticSearch版本升级时出现Java High Level接口变更导致的兼容性问题: 之前使用的是2.4.x,考虑性能和功能的增强,需要更换为6.4.x; 2.4.x中我们使用DSL语句直接查询(数据的不确定性和方便动态建立查询规则等因素),而新的ES Java 高阶API中去掉了相关接口的支持
    elasticsearch-wrapperquery
  • 学习大数据营销思维(下)
    编程学习网: 其实,通过上面的介绍,我们知道苹果通过各类产品与服务销售相互促进以理及薄利多销的方式来盈利第二种战略联盟类型是合作方的共同赢利。苹果公司打造了一个参与方共同受益的业务系统。
    学习大数据营销思维(下)
  • 纯干货:HLS 协议详解及优化技术全面解析
    编程学习网:HLS (HTTP Live Streaming), 是由 Apple 公司实现的基于 HTTP 的媒体流传输协议。他跟 DASH 协议的原理非常类似,通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件,然后提供一个配套的媒体列表文件给客户端,让客户端顺序地拉取这些媒体文件播放, 来实现看上去是在播放一条流的效果。HLS 目前广泛地应用于点播和直播领域。
    纯干货:HLS 协议详解及优化技术全面解析
  • 关于Python 代码全面分析
    欢迎各位阅读本篇,Python(KK 英语发音:/ˈpaɪθən/)是一种面向对象、直译式计算机程序设计语言。本篇文章讲述了关于Python 代码全面分析。
    关于Python 代码全面分析
  • es详解-原理-es原理之索引文档流程详解
    ElasticSearch中最重要原理是文档的索引和文档的读取,本文带你理解ES文档的索引过程。ES详解 - 原理:ES原理之索引文档流程详解文档索引步骤顺序单个文档多个文档文档索引过程详解整体的索引流程分步骤看数据持久化过程深入ElasticSearch索引文档的实现机制写操作的关键点Lucene的写Elastics
    es详解-原理-es原理之索引文档流程详解
  • 五大“网管”必备的网络数据分析工具
    是不是在为如何分析统计网络数据和流量烦恼呢?想不想监控、运维、排障轻松一些?下面给大家提供一些免费网络分析工具,以帮助大家更好的掌控自己的网络!编程学习网教育
    五大“网管”必备的网络数据分析工具

目录