python在日常工作处理中的应用-谈谈Python在工作中的应用

最近在一些地方用到了Python,在这里总结一下。

首先要明确的是:语言是为工作服务的。这样就不太容易陷入xx是宇宙最好的语言这种无聊的比较和讨(si)论(bi)之中。而且大牛们基本上都精通多种语言,能根据不同的应用场景采用不同语言来实现架构或业务目标。

从大学到工作,使用过不少语言,因此能够理解这一点。在众多的脚本语言中,个人比较偏爱Python,遇到问题时首先会考虑用Python解决,虽然主要项目还是用Java(Spring)来构建。

Python的特点

1.简单,非常容易学习。不过Python2和Python3在语法上比较分裂,虽然Python3是趋势,但目前很多系统上默认的实现都是Python2。如果工作偏运维多一些,则选择Python2较好,如果工作偏开发多,Python3更好。

2.文本处理很方便。如果不熟悉awk,Python用来处理文本还是非常简单的:

with open("xxx.log", "r") as f:

for line in f.readlines():

print line.strip(" ").slipt(" ")[0]

虽然相对于awk,代码还是多了些。但对比Java,三行就实现了一个拆列的功能,已经非常好了。

3.HTTP请求简单。requests 是我见过的所有HTTP请求库中最简单,最容易使用的。

import requests

res = requests.get(url) # 直接产生get请求

print res.text # 打印返回结果

print res.json() # 如果返回的数据是json结构的,直接打印出Json数据

如果是多线程进行请求,容易发生链接数不够用的情况,可以用以下办法处理:

import requests

s = requests.session()

s.keep_alive = False # Connection的keep_alive 为false能减少链接资源消耗

s.get(url)

4.多线程简单。Python多线程个人的感觉是比较适合处理IO密集的任务,例如文本/HTTP请求,不适合做计算密集的任务。主要是Python的GIL设计,使得计算密集多线程无法有效利用多核。但在IO密集的任务上,Python的多线程还是很有用的。

def doGet(url, name):

s = requests.session()

s.get(url)

thread_num = 10

threads=[]

for i in xrange(num):

url = "xxx"

t = threading.Thread(target=doGet, args=(url, i))

threads.append(t)

for t in threads:

t.start()

for t in threads:

t.join() #需要注意join函数的功能,主要是阻塞主线程

以上十几行代码就能写一个多线程处理的请求了。

5.数据分析(数据可视化)和机器学习。这方面Python有很多高级库可以使用,但是目前业务对这方面接触不多,所以此处不展开。

工作使用

在日常工作中,十分建议使用类Unix系统进行开发,例如Ubuntu/Mac等。它们里面一般自带有Python解释器,不需要安装就可以使用。但Windows上就需要安装了。

Python自带有命令行,但不是很好用,这里推荐安装ipython,并使用jupyter notebook。它们用来做一些简单的工具或者处理一些文本、HTTP请求问题,真是相当方便。

如果还要做机器学习相关方面的研究,建议安装Anaconda,该工具已经把几乎能用的到的库都封装了,就再也不用为Python的库烦恼了(Python的各种库兼容是一个非常坑爹的问题,虽然有virtualenv可以隔离,有时还是觉得不够方便)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值