Ubuntu 22安装使用Codon高性能Python编译器记录

news/2024/7/7 20:26:50

Ubuntu 22安装使用Codon高性能Python编译器记录

Codon 在官方 Ubuntu 存储库中没有直接的教程,但可以尝试如下方法进行安装。

一、更新系统

终端输入:

sudo apt update

以及

sudo apt upgrade

二、安装curl

输入指令:

sudo apt install curl

三、安装codon

输入指令:

/bin/bash -c "$(curl -fsSL https://exaloop.io/install.sh)"

在这里插入图片描述

四、配置

打开.bashrc文件,查看bashrc文件可以使用Ctrl+H按键,在根目录下查看bashrc文件,并在bashrc文件中添加:

export PATH=/home/user/.codon/bin:$PATH

其中user替换为自己的目录。按Ctrl+H后可以在根目录下直接看到.codon文件夹,查看文件夹属性也可以。
在这里插入图片描述
我的替换为:

export PATH=/home/cj/.codon/bin:$PATH

终端输入:

source .bashrc

五、验证

输入指令:

codon --version

输出版本信息
在这里插入图片描述
完成安装。

六、配置环境变量及代码运行

1.在系统路径下搜索libpython文件
在这里插入图片描述

找到的so文件如下
在这里插入图片描述
这里每个电脑的配置不一样,总之就是找到libpython x.x.so文件,再打开.bashrc,添加

export CODON_PYTHON=/path/to/libpython.X.Y.so

我的添加文件如下:
在这里插入图片描述
加入后输入:

source .bashrc

2.运行代码
尝试运行代码,在代码文件夹下打开终端输入:

codon run -release test.py

test.py为我自己的Python代码。会出现报错

test.py:2:8-14: error: no module named 'pandas'
time.codon:44:43-49: error: name 'stderr' is not defined
time.codon:225:8-12: error: name 'fabs' is not defined
test.py:9:8-19: error: no module named 'time'

解决方法:
输出问题应该是引用三方库时,出现部分引用问题。原始的python代码头部为:

import os
import pandas as pd
import time

修改为:

import os
from python import pandas as pd
from python import time

运行方式可以选择上面的指令:

codon run -release test.py

也可以使用指令生成二进制文件:

codon build -release -exe test.py

然后在终端输入:

./test

3.结果对比
本次代码为使用pandas库,对表格文件进行数据分析。原始代码用时为6.88s。
在这里插入图片描述
codon加速后用时2.36s。
在这里插入图片描述
差不多3倍左右的加速效果。


http://lihuaxi.xjx100.cn/news/1334500.html

相关文章

MFC 利用多态的特性实现子窗口同时存在一个

多个子窗口的类都继承同一父类 CDialogEx 于是在主窗口我声明一个CDialogEx指针 通过判断该指针是否为空 不为空则视为有一子窗口存在 注意这里介绍的是 非模态化窗口的关闭 你可以在任何时候调用DestroyWindow()以达到彻底销毁自身对象的作用。(DestroyWindow()的…

2024考研408-操作系统 第二章-进程与线程 学习笔记

文章目录 前言一、进程1.1、进程的概念、组成与特征1.1.1、进程的概念1.1.2、进程的组成认识PCB认识程序段与数据段(包含进程实体概念) 1.1.3、进程的特征知识回顾与重要考点 1.2、进程的状态、状态间的转换和组织方式1.2.1、进程的状态进程的五种状态详…

GetVersionExA 替代函数

这些替代函数可用于在Windows 10 和更高版本上获取正确的版本信息。 以下是一些可用的替代函数: 1. VerSetConditionMask 和 VerifyVersionInfo 这些函数可以用于确定当前操作系统是否符合给定的版本要求。它们在Windows8和更高版本中可用。 2. IsWindows100rGreater 这个函…

keil显示内存和存储占用百分比进度条工具(Keil5_disp_size_bar)

keil显示内存和存储占用百分比进度条工具(Keil5_disp_size_bar) - 开发环境 - 硬汉嵌入式论坛 - Powered by Discuz! 以进度条百分比来显示keil编译后代码对芯片的内存ram和存储flash的占用情况。原理是使用C语言遍历目录找到keil工程生成出的.map文件,然后找到对应…

每日一题:反转链表

解题思路: 定义三个指针:prev、curr 和 next,分别表示当前节点的前一个节点、当前节点和下一个节点。初始化 prev 为 None,curr 为链表的头节点。遍历链表,对于每个节点: 将当前节点的下一个节点保存为 n…

APB 3

一. APB3概述 APB协议是AMBA总线协议系列的一部分,其接口简单、功耗较低,常用于连接低带宽的高性能外设,每次数据传输至少需要两个时钟周期,且无法同时进行读写操作。 APB作为系统中的从机,可以通过AHB、AHB-Lite、AXI…

MacBook Linux安装zookeeper

MacBook Linux安装zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配…

1千w移动设备以及设备模型分各种方式存储到redis实际占用内存大小

1千w移动设备数据以及设备分存储到redis (以安卓为例:IDFA_MD5、OAID_MD5、ANDROID_ID_MD5 总设备码MD5约3000w)实际占用内存 string key value值存储大小(存20个不同来源模型分) 格式1 5.17G string key 为两种md5…