python在日常工作处理中的应用-谈谈Python在工作中的应用
最近在一些地方用到了Python,在这里总结一下。首先要明确的是:语言是为工作服务的。这样就不太容易陷入xx是宇宙最好的语言这种无聊的比较和讨(si)论(bi)之中。而且大牛们基本上都精通多种语言,能根据不同的应用场景采用不同语言来实现架构或业务目标。从大学到工作,使用过不少语言,因此能够理解这一点。在众多的脚本语言中,个人比较偏爱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可以隔离,有时还是觉得不够方便)。
更多推荐
所有评论(0)