首页 > 编程语言 >codon-基于LLVM的python编译器

codon-基于LLVM的python编译器

时间:2023-05-29 19:57:10浏览次数:53  
标签:LLVM python random codon radii 编译器 plt np

安装

目前只linux和mac系统。从https://github.com/exaloop/codon下载最新版进行安装。然后设置环境变量:

export PATH=~/.codon/bin:$PATH
export CODON_PYTHON=/usr/lib/libpython3.10.so

上述路径换成自己的系统路径。下面的示例代码(goldbach.codon):

import math


def prime(n):
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False

    return True


n = 100_000
primes = [i for i in range(2, n) if prime(i)]
for i in primes:
    for j in primes:
        if i < j and i + j == n:
            print(f"{n} = {i} + {j}")

编译并运行程序:

codon build goldbach.codon --release
./goldbach

速度明显比原始的python程序快很多。下面的代码plot.codon使用mathplotlib进行绘图:

from python import numpy as np
from python import matplotlib.pyplot as plt

# Set chinese font family
# 在linux上可用:
# $ fc-list :lang=zh family
# 检查支持中文的所有字体
plt.rcParams["font.family"] = ["Source Han Sans CN"]

# Fixing random state for reproducibility
np.random.seed(19680801)

# Compute pie slices
N = 20
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)
colors = plt.cm.viridis(radii / 10.0)

ax = plt.subplot(projection="polar")
ax.bar(theta, radii, width=width, bottom=0.0, color=colors, alpha=0.5)
ax.set_title("极坐标图")

plt.show()

编译并运行:

codon build plot.codon --release
./plot

结果运行正常。

标签:LLVM,python,random,codon,radii,编译器,plt,np
From: https://www.cnblogs.com/soarowl/p/17441456.html

相关文章

  • < Python全景系列-8 > Python超薄感知,超强保护:异常处理的绝佳实践
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。**欢迎来到系列第八篇,异常处理的深入探讨。......
  • 如何修改notebook内核对应的python地址
    要修改JupyterNotebook内核对应的Python地址,可以按照以下步骤进行:打开终端或命令提示符。列出当前可用的JupyterNotebook内核。运行以下命令:jupyterkernelspeclist,这将列出已安装的内核及其位置。找到您想要修改的内核对应的配置文件。在上一步的输出中,找到......
  • Python进阶二
    面向对象编程类和实例类:关键字class,类就是创建一个模板;实例就是将模板实例化构造方法:__init__负责绑定类的一些必须的属性,当实例化的时候,必须接受这些属性。在类里面也可以定义函数(在里面叫方法),第一个参数必须是self,其他就跟正常函数没有啥区别了。访问限制当我们使用__init_......
  • Python进阶一
    使用MarkDown学习Python。(前面基础的都在XMind)进制转换转成十进制(一般是二进制,八进制,十六进制):所有转成十进制的,都只需要int(原数字的字符串格式,进制数)a="1001"s=int(a,2)这个就是把二进制的数字a转成十进制print(s)十进制转十六进制(使用函数hex())print(hex(1033......
  • Python进阶六
    网络编程TCP编程详细都写CSDN上了。使用来socket建立连接TCP连接是一种可靠的连接,这里建立基于TCP协议连接的socket,客户端主要是获取服务器信息的importsocket#前面这个套接字是表示IPV的就是IP地址的类型,是IPV4,有一个是AF_INET6表示IPV6。#第二个表示是流格式套接......
  • Python进阶五
    常用的第三方模块数据分析的常用模块(导师安排)numpynumpy就是操作多维数组,对象是ndarray,就相当于python自己内置的列表list,但是ndarray比list更高效。type(),dtype,astype:在numpy里面有比python内置更多的数据类型,也更精确,比如int32,uint(无符号整数),dtype和type(),都是返回......
  • 16 个必知必会的 Python 教程!
    1.三元运算符三元运算符是if-else语句的简写。语法是value_if_trueifconditionelsevalue_if_false。三元运算符是一行代码,可以替代多行if-else语句,使你的代码更加简洁。1a=52b=103max=aifa>belseb#value_if_trueifconditionelsevalue_if_fal......
  • Python进阶三
    进程和线程一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程;在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,把进程内的这些“子任务”称为线程(Thread),比如Word,它可以同时进行打字、拼写检查、打印等事情。......
  • Python进阶七
    访问数据库importsqlite3#连接一个数据库,要是没有就会自己创建一个conn=sqlite3.connect("MySQL.db")#创建一个游标,用于执行SQL语句cursor=conn.cursor()##创建表创建表的一般结构就是:createtable<表名>(<属性名字类型>,......);#或者也可以把要执行的语......
  • python中测试方法所用的时间—timeit
    方法代码使用timeit方法测试两个函数的运行速度importtimeitstrlist=['Thisisalongstringthatwillnitkeepinmemory.'forninrange(10000)]defuse_join():#使用字符串的join方法连接多个字符串return''.join(strlist)defues_plus():#使用运算符+连接多个字......