Python深入探究(四) Python高级函数!
[TOC]
*与**的用法常规用法
python函数传递参数的方式有两种:
位置参数(positional argument)关键词参数(keyword argument)*args 与 **kwargs 的区别,两者都是 python 中的可变参数:
args 表示任何多个无名参数,它本质是一个 tuple\*kwargs 表示关键字参数,它本质上是一个 dict如果同时使用 args 和 \*kwargs 时,必须 args 参数列要在 \*kwargs 之前。
在这个例子中,rest是由所有其他位置参数组成的元组。然后我们在代码中把它当成了一个序列来进行后续的计算。
12345678def avg(first,*rest): print('first is{}, rest is{}'.format(first,rest))if __name__ == "__main__": avg(1,2) avg(1,2,3,4)输出: first is1, rest is(2,)firs ...
MapReduce编程风格讨论
原论文链接
MapReduce,是一个编程的模型,
用于处理和生成大型数据集的编程模型和相关实现。用户指定一个map函数,处理一个键/值对,生成一组中间键/值对,以及一个reduce函数,合并与同一个中间键相关的所有中间值。如文中所示,许多现实世界的任务都可以用这个模型来表达。
以这种功能风格编写的程序会自动并行化,并在大型商品机集群上执行。运行时系统负责对输入数据进行分区、在一组机器上调度程序的执行、处理机器故障以及管理所需的机器间通信等细节。这使得没有任何并行和分布式系统经验的程序员可以轻松地利用大型分布式系统的资源。
我们对MapReduce的实现在大型商品机集群上运行,并且具有高度的可扩展性:一个典型的MapReduce计算可以在数千台机器上处理许多TB的数据。程序员们发现这个系统很容易使用:已经实现了数百个MapReduce程序,每天在Google的集群上执行的MapReduce作业多达一千多个。
任务:
Python深入探究(三)一些小语法糖
try用法最简单的:
12345678try: 正常的操作 ......................except: 发生异常,执行这块代码 ......................else: 如果没有异常执行这块代码
except后面还可以跟错误信息,用来匹配到具体的错误:
12345678try: fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!")except IOError: print "Error: 没有找到文件或读取文件失败"else: print "内容写入文件成功" fh.close()
rise则是主动引发一个错误信息:
12345inputValue=input("please input a int data :")if type(inputValue)!=type(1): raise ValueErrorel ...
Python深入探究(二)并发编程!面试挂在这!
[TOC]
来点干货:Python并发编程探究(面试挂在这了55555)大框架:
threading — 基于线程的并行
信号量对象
multiprocessing — 基于进程的并行
concurrent.futures — 启动并行任务(都是基于Executor抽象类的)
Executor 对象
ThreadPoolExecutor 线程池
ThreadPoolExecutor 例子
ProcessPoolExecutor
ProcessPoolExecutor 例子
Future 对象
subprocess — 子进程管理最多用于shell命令,构建管道获得输出
*==用这个提纲,去学习,能够有更深刻的理解==**
后台进程使用threading模块来进行新线程的创建,如果默认情况下的话,是会守护子线程的,也就是,哪怕主线程已经结束了,子线程没有退出,python的解释器就不会退出:
123456789101112import timefrom threading import Threaddef countdown(n): while n ...
Python深入探究(一)Python编译方法
静态语言与脚本语言其实在一开始就会有疑问,什么叫静态语言、脚本语言,Python为什么成了“可以执行的伪代码/脚本”,今天在各处搜索了相关资料,自己尝试总结下。
首先,给定义,采用编译执行的是静态语言,采用解释执行的是脚本语言。
编译执行,是必须首先将代码编译成一个目标程序,然后计算机再去执行这个程序的,典型的例子就是自己在Linux环境下练习C语言的时候,编写完.c代码,还要用gcc编译一下成.exe文件,才能够执行。
解释执行,是执行一句,计算机提交一句,不会形成目标程序
在这里就不得不提Java和Python不同的解释器了。
Java先不写
Python代码执行过程Python解释执行过程,好文
执行过程如下:
12graph TB;词法分析--> 句法分析 -->编译生成字节码文件-->执行字节码文件
字节码文件即.pyc文件,其实是python虚拟程序中的PyCodeObject,python都是先将代码转换成字节码,然后由虚拟机将字节码变成机器语言,进行执行。
字节码在Python虚拟机程序里对应的是PyCodeObject对象。.pyc文件是字 ...
SDN课设
SDN课设,使用Ryu来控制,啃源码可真的累呀
Github源码在此
项目背景 目前智慧城市越来越发展,但是随着各种网络设备以及传感器的应用,城市的网络负担也在加大。如果数据分析等操作都由城市的数据中心来做,那么一定网络流量不堪重负。雾计算,是一个好思想,然而,某些时候又需要整体进行调控,我们使用SDN的思想来实现。
这是一个交通路口的信号灯及背后处理器的拓扑,我们都知道,可以通过当前路况来智能调整交通信号灯的时长,使得交通更加通畅。我们设想,在车流量不是很大的时候,摄像头10.1.1.100收集车流信息,可以由局域网中的MCU(10.3.3.150)做决策,调节其时长;然而在上下班高峰期,就需要将车流信息上传到数据处理中心(10.2.2.130),数据中心根据全城的交通情况做决策,这样就避免各个路口自己做决策结果冲突了。
但是,一个摄像头显然不会有这么智能的功能,知道什么时候将流发给局域网的MCU还是远程的数据中心。我们就像,设置一个虚拟IP(10.1.1.77)与对应的虚拟MAC(66:66:66:66:66:66),路由器在收到这个 ...
打工人笔记
Github源码
多线程/进程问题:以iperf3为例在给一个项目写可视化的时候,项目需要用iperf3来进行网络测试。ipef3分为服务器server端和客户client端两个进程,一般使用cmd打开,开启测试的界面是这个样子:
server端:
client端:
第一个坑为了能够使用python代码控制控制台打开iperf3.exe,使用==subprocess==模块来启动。
但是subprocess直接启动程序,需要将iperf3.exe的路径加入到系统变量里,这样就不需要cmd进入对应文件目录再启动:
第二个坑在解决直接用命令打开ipef3.exe之后,就是用subprocess使用iperf3.exe -s和iperf3.exe -c 127.0.0.1这两个命令,应该这样写:
1234567891011121314def server(): with subprocess.Popen(["iperf3.exe", "-s"], stdout=subprocess.PIPE, universal_newlines=Tru ...
对接下来的感悟
2020.5.11
xbot-park寒假,一些想说的
一些想说的写在前面有遗憾,但更多的是有收获,遇到了一群志同道合的人,度过了很有意义的一段时光,想着不管怎么样,都把自己碎碎念也好,思考也好,记录下来。
各位,后会有期~
写给选择首先聊聊自己大一到现在吧,其实一直觉得,我可以很骄傲的说,我对以前的一切的选择不后悔,我认为自己是主动积极的去寻找自己想要的生活想要的样子,并且也努力去尝试了很多事情,数模,课设,电视台,舞蹈,还有很多别的一些。但是呢,正是因为接触但没有钻研了很多,所以就会有更多的选择,而正是因为有更多选择,才会让自己,面临一个选择的路口而不知道该如何去选择。
选择对于一些人真的是很难的事情啊,如果是一个感性的人,或许就不会考虑很多,只按照自己的想法去做就好了,偏偏自己,不是这样的,而是总是想要理性的评估下每个选择找到最好的。(后来当然明白了,哪有什么最好的,只有自己最喜欢的)
对于我来说,在大三这个阶段,未来的方向成为了让自己纠结许久的东西,看到身边的朋友们都找到了自己的路,有时候真的挺羡慕。软件?后端?嵌入式?通信?FPGA?网络?我不知道,所以我来到了这里,来到了松山湖,我想要找到自己的方向,给自己一个答案。
当然寻找方 ...
Flask学习
Flask学习官方文档
1.先实现数据库增删改查
2.再配合前端实现管理员的账号登录
3.考虑如何在CentOS上部署 安装python3 CentOS部署flask python3
==11.23———————–再说吧,今天先写会作业,摸了摸了==
设置路由参数1234567@app.route("/user/<user_id>")def index(user_id)return “展示的id为%s”%user_id@app.route("/user/int:user_id")def index(user_id)return “展示的id为%s”%user_id
通过给路由器设置参数,使得客户端可以通过url将参数传递到后端
上传文件今天醉了,整了半天上传文件没办法,最后是因为这个路径问题:
1upload_path = os.path.join(basepath, 'static\\uploads',secure_filename(f.filename))
这个\\upload,windows要注意转义符
还 ...