最近看到pypy可以提高python的运行速率到很变态的境地,加之现在ryu发现拓扑的能力有限,不能满足实验要求,所以想将其试着在pypy上运行

部署pypy在virtualenv,在学python初期,就听闻python的三大神器:pip、virtualenv和fabric,前面只是尝试了下virtualenv,这次将pypy部署在了一个虚拟环境中,感觉到了virtualenv极大的便利,过程如下:

  1. 安装virtualenv
    virtualenv安装比较简单,直接使用下面命令:

    pip install virtualenv
    
  2. 下载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
    
  3. 在虚拟环境中生成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

  4. 激活之后,终端提示符前面多了个括号,里面是自己创建的虚拟环境,类似(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的更多相关文章

  1. Java和PyPy速度对比

    Java和PyPy运行同一段代码,对比结果. Java代码: package javatest; import java.text.DecimalFormat; import java.util.Da ...

  2. SDN学习之RYU源码安装

    近些天开始接触SDN,即软件定义网络的学习,由于是初学者,想通过写博客来分享自己对sdn学习中所使用的ryu以及mininet仿真软件. Mininet源码安装: 尽管网上对mininet的安装教程很 ...

  3. ryu 下发流表配置

    资料链接:http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html 运行ryu进程: ryu-manager --ofp-tcp-listen-p ...

  4. pypy安装与使用

    首先安装pypy环境: yum install pypy -y yum install pypy-devel -y 然后安装pypy的pip:wget https://bootstrap.pypa.i ...

  5. 通过源码安装RYU控制器

    目录 安装 测试 安装 安装pip3 sudo apt-get install python3-pip 获取ryu源码 git clone https://github.com/osrg/ryu.gi ...

  6. 实验6:开源控制器实———RYU

    一.实验目的 1.能够独立部署RYU控制器: 2.能够理解RYU控制器实现软件定义的集线器原理: 3.能够理解RYU控制器实现软件定义的交换机原理. 二.实验环境 Ubuntu 20.04 Deskt ...

  7. Python Day02

    Python 代码执行流程: 编译 --> 执行 源代码  -->  字节码  -->  机器码  --> CPU执行 python 先将自己的源代码,编译成Python 字节 ...

  8. Docker部署SDN环境

    2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...

  9. Python全栈之路-----基础篇

    Python诞生 Python是著名的”龟叔“Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python语法很多来自C,但又受到 ...

随机推荐

  1. Linux 目录和文件操作

    Linux常用命令--目录和文件操作 [目录]删除.复制.移动 : 1.删除文件夹用:rmdir 文件夹名 但是rmdir不能删除非空的文件夹,那如何删除非空文件夹呢: 2.通常情况下,删除文件用:r ...

  2. vue.js使用之计算属性与方法返回的差别

    <!DOCTYPE html> <html> <head> <script src="https://unpkg.com/vue@2.4.2&quo ...

  3. SQLyog之MySQL客户端的下载、安装和使用(普通版)

    本博文的主要内容有 .SQLyog的下载 .SQLyog的安装 .SQLyog的使用 前期,安装这个,不多说 MySQL Server类型之MySQL客户端工具的下载.安装和使用 1.SQLyog的下 ...

  4. php实现IP地址和数字相互转换

    echo $a=ip2long ("202.97.224.68");//地址转换成数字 系统自带的函数 注:这里面有一个要注意的地方,大概由于PHP无法正确判断转换完的数字类型,出 ...

  5. js限制文本框只能输入数字方法

    输入大于0的正整数 <input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,' ...

  6. Atitit.ui控件---下拉菜单选择控件的实现select html

    Atitit.ui控件---下拉菜单选择控件的实现select   html 1. 调用& model的实现 1 2. -----select.jsp------ 1 1. 调用& m ...

  7. 网络结构----ISO/OSI七层网络模型和TCP/IP四层网络模型

    对等实体在一次交互作用中传送的信息单位称为协议数据单元.它包含控制信息和用户数据两部分. 上下层实体之间的接口称为服务訪问点. ISO/OSI參考模型分为:物理层.数据链路层.网络层.传输层.会话层. ...

  8. MVC & Entity Framework(2)- controller、Models单独DLL

    继上一篇MVC & Entity Framework(1)- 开发环境之后,已经很久没更新了.接下来记录一下怎么把MVC中的controller单独拆为一个类库,然后在web项目中引用.另外, ...

  9. Source Insight 项目简单使用说明

    SI(Source Insight) 是我一直写代码的好伙伴, 相信这强大的软件也是广大程序猿编写软件的利器. 正所谓" 工欲善其事, 必先利其器", 我们要学会利用这款软件. 先 ...

  10. PHPEXCEL在thinkphp中封装成类使用

    PHPEXCEL在thinkphp中封装成类使用 标签: phpexcel导出导入thinkphp -- : 435人阅读 评论() 收藏 举报 分类: php() 版权声明:本文为博主原创文章,未经 ...