用pypy运行ryu
最近看到pypy可以提高python的运行速率到很变态的境地,加之现在ryu发现拓扑的能力有限,不能满足实验要求,所以想将其试着在pypy上运行
部署pypy在virtualenv,在学python初期,就听闻python的三大神器:pip、virtualenv和fabric,前面只是尝试了下virtualenv,这次将pypy部署在了一个虚拟环境中,感觉到了virtualenv极大的便利,过程如下:
- 安装virtualenv
virtualenv安装比较简单,直接使用下面命令:pip install virtualenv
下载pypy
pypy的官网下载地址为:http://pypy.org/download.html,里面提供了各种版本和平台的pypy,但是没有windows 64bit的,原因在于CPython和Pypy对于int数据类型的长度定义不同,详细的可参见官网说明,但是stackoverflow上面有人说win 32bit的pypy可以很好的运行在win 64bit上了(网址),我没有尝试,大家可以尝试下,如果不行,所以最好在linux下使用,或者将python的版本换成32位的,选择适合自己环境的pypy进行下载。然后进行解压,我下载的为tar.bz2格式的压缩文件,所以用下面的命令进行解压,按照习惯,我就将其解压到home目录下。tar -vxjf pypy-4.0.0-linux64.tar.bz2
在虚拟环境中生成pypy编译环境
使用如下命令(注意选择自己pypy解压缩后的目录):virtualenv -p /home/cotyb/pypy/bin/pypy pypy-env
这样就创建了一个名为pypy-env,解释器为pypy的虚拟环境,然后cd pypy-env,跳转到虚拟环境所在文件夹,执行. bin/activate激活虚拟环境,可以执行python或者pypy来看提示信息,发现pypy是否已经配置成功
默认情况下,虚拟环境会依赖系统环境中的site packages,即系统中安装好的第三方库也会安装在虚拟环境中,如果不想依赖这些库,可以加上参数:--no-site-packages,如果想退出虚拟环境,可以使用deactivate激活之后,终端提示符前面多了个括号,里面是自己创建的虚拟环境,类似(pypy-env),然后用git clone git://github.com/osrg/ryu.git下载ryu,git tag和git checkout可以选择自己想用的ryu版本,如果不会用,可以参见此博客。最后进行ryu安装。之后就可以运行自己的程序了。
我用Mininet建立了depth=8的tree拓扑,用pypy执行发现拓扑的命令,很多情况下还是会卡住,不能完全发现拓扑,卡在100个交换机以下,但是在10多次实验中有2次发现了完全的拓扑
同时用pypy执行了一些其他的运算测试,包括文件处理,纯运算等,发现pypy的效率甚至是低于python的,等有时间了再详细了解pypy。
用pypy运行ryu的更多相关文章
- Java和PyPy速度对比
Java和PyPy运行同一段代码,对比结果. Java代码: package javatest; import java.text.DecimalFormat; import java.util.Da ...
- SDN学习之RYU源码安装
近些天开始接触SDN,即软件定义网络的学习,由于是初学者,想通过写博客来分享自己对sdn学习中所使用的ryu以及mininet仿真软件. Mininet源码安装: 尽管网上对mininet的安装教程很 ...
- ryu 下发流表配置
资料链接:http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html 运行ryu进程: ryu-manager --ofp-tcp-listen-p ...
- pypy安装与使用
首先安装pypy环境: yum install pypy -y yum install pypy-devel -y 然后安装pypy的pip:wget https://bootstrap.pypa.i ...
- 通过源码安装RYU控制器
目录 安装 测试 安装 安装pip3 sudo apt-get install python3-pip 获取ryu源码 git clone https://github.com/osrg/ryu.gi ...
- 实验6:开源控制器实———RYU
一.实验目的 1.能够独立部署RYU控制器: 2.能够理解RYU控制器实现软件定义的集线器原理: 3.能够理解RYU控制器实现软件定义的交换机原理. 二.实验环境 Ubuntu 20.04 Deskt ...
- Python Day02
Python 代码执行流程: 编译 --> 执行 源代码 --> 字节码 --> 机器码 --> CPU执行 python 先将自己的源代码,编译成Python 字节 ...
- Docker部署SDN环境
2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...
- Python全栈之路-----基础篇
Python诞生 Python是著名的”龟叔“Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python语法很多来自C,但又受到 ...
随机推荐
- cookie技术自动登录
user public class User implements Serializable{ private String username; private String nick; privat ...
- 在 Flash ActionScript 2.0 中调用 Javascript 方法
本篇文章由:http://xinpure.com/call-the-javascript-method-in-flash-actionscript-2-0/ 在 Flash ActionScript ...
- <转>LuaTinker的bug和缺陷
LuaTinker的bug和缺陷 LuaTinker是一套还不错的C++代码和Lua代码的绑定库,作者是韩国人Kwon-il Lee,作者应该是参考了LuaBind后,为了简化和避免过重而实现的.其官 ...
- 【转】GGTalk即时通讯系统(支持广域网)终于有移动端了!(技术原理、实现、源码)
原文地址:http://www.cnblogs.com/justnow/p/4836636.html 首先要感谢大家一直以来对于GGTalk即时通讯系统的关注和支持!GGTalk即时通讯系统的不断完善 ...
- Java成员变量与局部变量同名
看到成员变量和局部变量同名这个知识点的时候一开始有点懵逼,想了一下其实特别简单. 先来看一个简单的代码. 首先我定义了一个Person类. public class Person { private ...
- Incorrect integer value: '' for column 'mid' at row 11366Incorrect integer value: '' for column 'mid' at row 1,自增字段为空,添加记录时出错
在本地机器做测试时,数据可以正常添加,但是将代码放置到服务器上时,提示:Incorrect integer value: '' for column 'mid' at row 11366Incorre ...
- MySQL-group-replication 配置
MySQL-Group-Replication 是mysql-5.7.17版本开发出来的新特性:它在master-slave 之间实现了强一致性, 但是就目前来说主要是性能不太好. [1]确定当前的m ...
- Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案
Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案 1. 运行平台:跨平台 android ios pc mobile 1.1. -------------前端 界面------ ...
- 495. Implement Stack【easy】
Implement a stack. You can use any data structure inside a stack except stack itself to implement it ...
- 重启tomcat但是session仍然有效的解决方法
参考:http://www.blogjava.net/freeman1984/archive/2010/03/30/316901.html server.xml,在你的webapp的Context节点 ...