用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,但又受到 ...
随机推荐
- Maven的镜像设置
文件位置 国内的阿里云 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven< ...
- PHP-客户端的IP地址伪造、CDN、反向代理、获取的那些事儿
外界流传的JAVA/PHP服务器端获取客户端IP都是这么取的: 伪代码: 1)ip = request.getHeader("X-FORWARDED-FOR") 可伪造,参 ...
- AOP - PostSharp 2.0
PostSharp是一个非常优秀的AOP框架,使用上非常方便,功能强大,对目标拦截的方法不需要做什么修改,但现在已经商业化运作从PostSharp官方网站下载一个试用版,安装 简单示例PostShar ...
- The server has either erred or is incapable of performing the requested operation. (HTTP 500)
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- RocketMQ综述(未完成)
RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.能够保证严格的消息顺序 2.提供丰富的消息拉取模式 3.高效的订阅者水平扩展能力 4.实时的消息订阅机制 5.亿级消息堆积能力 ...
- javaweb 压缩文件图片
压缩图片分辨率 ,根据 url 和 根据 file /** * <p>Title: thumbnailImage</p> * <p>Description: 根据 ...
- PHP学习笔记(9)文件上传
index.php <!doctype html> <html lang="en"> <head> <meta charset=" ...
- FirstLetterUtil
package cn.edu.hbcf.common.utils; public class FirstLetterUtil { private static int BEGIN = 45217; p ...
- 机器学习算法( 七、AdaBoost元算法)
一.概述 当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见.机器学习处理问题时又何尝不是如此?这就是元算法(meta-algorithm)背后的思路.元算法是对其他算法进行组合的一种方 ...
- c# 中的UserControl是什么 用户控件和自定义控件有什么区别
用户控件是许多控件的集成 自定义控件是自己写一个控件类,或者继承已有的控件类 复合控件是封装在公共容器内的 Windows 窗体控件的集合.这种控件有时称为“用户控件”.包含的控件称为“构成控件”. ...