当前位置:首页 » 编程语言 » python加速

python加速

发布时间: 2022-05-01 22:23:35

A. 如何让python使用cuda加速

Numba通过及时编译机制(JIT)优化Python代码,Numba可以针对本机的硬件环境进行优化,同时支持CPU和GPU的优化,并且可以和Numpy集成,使Python代码可以在GPU上运行,只需在函数上方加上相关的指令标记!

B. 怎样使用gpu加速python深度学习

Colman里面可以调模式的。

C. 如何在i5上实现20倍的Python运行速度

Intel Distribution for Python 在今年二月进行了更新——英特尔发布了 Update 2 版本。以“加速”为核心的它,相比原生 Python 环境有多大提升呢?

雷锋网获知,并行计算专家、前英特尔高级工程师 James Reinders 对老东家的产品进行了测试。他对外宣布:在配备四核 i5 的 iMAC 上实现了 20 倍的性能加速!

至于他是怎么做到的,请继续往下看(含代码)。

James Reinders

James Reinders:利用 Intel Distribution for Python,我实现了Python 的 20 倍加速,并且可用单个命令关闭/启用。这还不是在最优情况下,而在虚拟环境——在 VirtualBox(下文简称 VBox) 上运行的 openSUSElinuxTumbleweed(即“滚动版本”,请参考 openSUSE官网),使用的机器是四核 iMac。

这在Windows, Linux 或 OS X 都能实现。英特尔并没有把openSUSE 加入经他们测试过的 Linux 配置列表中(SUSE Enterprise 在表中),但我在运行中并没有遇到任何问题。

这就是我怎么做的:

  • 下载Anaconda 命令行安装程序,地址为 。

  • 安装:% bash Anaconda2-4.3.0-Linux-x86_64.sh

  • 安装英特尔加速器,作为一个单独的、可开启关闭的“环境”:% conda config --add channels intel % conda create --name intelpy intelpython2_full python=2

  • 运行示例程序,看到在我的 openSUSE VBox 设置上有 15 到 20 倍的速度提升。

  • % source deactivate intelpy% python < myprog.py

  • np.sin102400 10000 36.1987440586np.cos102400 10000 36.1938228607np.tan102400 10000 51.487637043

  • % source activate intelpy% python < myprog.py

  • np.sin102400 10000 1.76131296158np.cos102400 10000 1.83870100975np.tan102400 10000 3.38778400421That’s all! The speed-ups are 20.6X, 19.7X, and 15.2X in this quick test running on a virtual machine.

  • Here’s my little Python program:% cat myprog.pyimport numpy as npimport time

  • N = 102400x = np.linspace (0.0123, 4567.89, N)def mine (x,Z,func,name): print name;

  • start = time.time () for z in range ( 0, Z ) :

  • y = func (x);

  • end = time.time () print N, Z, end - start returnmine (x,10000,np.sin,'np.sin')

  • mine (x,10000,np.cos,'np.cos')

  • mine (x,10000,np.tan,'np.tan')

  • 我花很短时间搞起来这个程序,用来验证英特尔对加速NumPy 中transcendental expression 的承诺。Cosine, sine 和 tangent 是我还能记得的、搞 TI calculator 时候用的transcendental,所以我用它们来试。我决定对每一个进行十亿级测试——运行超过十万个数字的函数,重复超过一万次。

    虽然未必是一个很有意思的程序,但对于加速而言是个不错的测试。

    随时加速Python

    我此前写过一篇文章,讨论“Python 加速”(“accelerated Python”)使其更适用于大数据和 HPC 应用。在速度更快之外,我还展示了,使用 Conda 来开启/关闭加速是多么得容易。这非常赞,让安装它的决定变得更加安全、没有顾虑——因为该功能是一个可选项。(对新手的提醒:Anaconda 是针对 Python 算法包的集合,Conda 则是 package manager,即算法包管理器。我两个都用并且都很喜欢。)

    我使用“conda create”来创造被我称之为intelpy 的环境。然后,我能够使用“source activate intelpy”、“source deactivate intelpy”来激活、关闭它。

    Intel Distribution for Python 带来的大幅加速能力,让“accelerated Python”变得更实用更让人信服。

    值得注意的是,“accelerated Python” 只是使用更快的Python 算法库,不需要对代码做任何改动。当然,我们的 Python 代码必须使用了某些加速的东西,才能从中获益。

    据雷锋网得知,英特尔通过三大方面实现 Python 加速:

  • 利用多核;

  • 利用矢量指令(SIMD),比如 SSE, AVX, AVX2 和 AVX-512;

  • 使用英特尔 Math Kernel Library(Intel MKL) 的更先进算法。

  • 对于运行于矢量或矩阵上的程序,上述这些都会生效。对于偶尔的单独cosine,我们不应该期待大幅速度提升。同样的,对于单核 CPU,我们也不应该有性能提升的幻想。当然,英特尔 72 核协处理器Xeon Phi 会在大量多核应用的跑分中领先。在我的例子中,我的虚拟机只利用 iMac i5 的四个核心。

    FFT 在 4 核虚拟机上有八倍性能提升

    我也试了下Fast Fourier Transforms (FFT)。使用与原始程序相同的设置,我只是按照如下方式运行FFT 程序:

  • % source deactivate intelpy% python < myfftprog.py

  • fft5000 2.22796392441fft7000 8.74916005135

  • % source activate intelpy% python < myfftprog.py

  • fft5000 0.277629137039fft7000 1.11230897903

  • 速度提升为 8 和 7.9 倍。当然,还是运行于四核 iMac 上的 openSUSE 和 VBox。

    这是我的快速FFT 程序:

  • % cat myfftprog.pyimport numpy as npimport numpy.random as rnimport timedef trythis (Z):

  • mat = rn.rand (Z,Z) + 1j * rn.randn (Z,Z) print 'fft'

  • start = time.time () # 2D transform on a complex-valued matrix:

  • result = np.fft.fft2(mat)

  • end = time.time () print Z, end - start returntrythis (5000);

  • trythis (7000);

  • 新 Python 加速

    我们了解到,以下是 Intel Distribution for Python 全新 Update 2 版本中,得到了新的速度提升的方面:

  • 优化 NumPy 的算术和transcendental 表达

    Transcendental expressions 包含我在快速示例程序里用的 cosine, sine 和 tangen。这些优化的核心是对 NumPy 的改变,使得 primitives (在 ndarray 数据上进行运算)能选择性地使用英特尔 MKL Short Vector Math Library (SVML)和 MKL Vector Math Library (VML) 的能力。这使得 Python 利用处理器的最新矢量能力,包括多核优化和 AVX/AVX2/AVX-512。英特尔团队表示,他们利用 Xeon Phi,实现过NumPy 算术和 transcendental 运算在 vector-vector 和 vector-scalar 上最高 400 倍的速度提升。

  • 优化NumPy 和 SciPy 的 FFT

    这些优化的核心是英特尔 MKL,一系列 NumPy、SciPy 函数都能用到它对 FFT 的原生优化。这些优化包含真实、复杂的数据类型,单精度和双精度都包含 (single and double precision),从一维到多维的数据,in place 或者out of place。英特尔团队见到过这项更新带来 60 倍的性能提升。这使得Python 的性能可与原生C/C++ 程序相媲美。

  • 优化内存管理

    Python 是一门动态语言,为用户管理内存。Python 应用的性能,在很大程度上取决于内存运行的性能,这包括内存分配、再分配(de-allocation)、复制和移动。英特尔提供的加速版本 Python,能在 NumPy分配数组时保证最佳的 alignment,所以 NumPy、SciPy 的运算函数,能从相应排列的 SIMD 内存访问指令获益。英特尔表示最大的提升来自于对内存复制和移动运算的优化。

  • 更快——能用Conda 方便地关闭/启用

    Anaconda 英特尔渠道的最新加速版本 Python,为 Python 程序带来显着性能优化,而无需改变代码。下载、安装也很方便。

    我真的特喜欢用Conda 把它开启/关闭这一功能。这方便了性能对比,并且让我感到安心——没有这个功能的话,我会对切换到超快的数学函数感到犹豫。

D. 看到几个给 python 做加速的方案

python 性能加速的方法:
选择一个正确的数据结构。
这个说法深有体会。Python中多变的数据结构可以造成很大的差异,使用一个set就可以事半功倍。甚至一个自己定义的数据结构,对于内存,运算速度,处理方式等都有很大的影响。
进行排序
我在项目中也遇到过,几百万的数据URL需要进行鉴别,哪些数据抓取了哪些没有,抓取的部分还有重复。使用if x in y这种格式,则需要o(m*n)的时间复杂度。而两边都对URL进行排序后,则可以使用两个指针轻松搞定。
字符串组合
编写大字符串的时候,不建议使用加号拼接字符串。使用join,%s(py3中使用format方法)等官方的方法效果更好。
循环的使用
如果使用for循环进行简单而大量的操作,不妨试试map()函数,或者python2.0中就已经有的list方法直接生成。或者使用迭代器进行循环的操作。
避免使用点方法
如上,需要使用list.append()方法的时候,这些方法都是需要在每次调用的时候重新确定(原文reevaluated)的,所以可以提前代替,如re.compile()方法。
使用局部变量
可以将一些代码函数化,从而将变量转为局部变量,Python获取局部变量比使用全局变量要快得多。
初始化字典元素
字典的当前使用新技巧包括:使用keyError来定位没有的key,使用get()方法来返回键对应的值。字典中还有collections模块中较多的:defaultdict,OrderedDict类等。
首先在头部写明import声明
大量的import会影响Python的性能。虽然随处可以import, 但最好在代码的头部集中写明。
数据的聚合
一次将多个数据聚合起来传递给函数比多次调用函数的开销要小得多。
减少执行语句的数量
Python中有一个定期检查线程是否该运行的函数。这个函数的大量调用会影响性能。最好我们可以设置这个值为较大的数,或者使用少的执行语句而以空间换时间。
Python不是C
移位不一定比加法快。Python是一个高级语言,调用底层不一定快。
使用profile来分析函数的性能

E. 浏览器,python命令哪个快

浏览器,python命令下载工具快。

特别是下载工具,一般会有自己的优化线路,以及p2p下载这样的功能,可以加速下载,而你自己写的request方法也没有这样的功能,是直接从原始站点单线程下载,相比之下,肯定会比下载工具的要慢一些。

python命令可移植性:

由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX。

VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。

F. 用Python 做策略回测,耗时很长,有什么加速办法

少用for,尽量用numpy/pandas的向量化方法。
少用自己写的python方法,先看看numpy /pandas是不是已有现成的功能。
有几个numpy 的加速包,比如numexpr.
安装Intel MKL.
最后,可以讲关键部分用c/c++实现。
如果无法避开python的for,建议使用Numba来提速,理想情况下可以达到和numpy向量化差不多的速度。

G. 加速Python程序运行

python是一门简洁、高效的语言,这也是它的设计理念!下面我们来看一下如何加速我们的python。

以下举例说明

一、分析代码运行时间

第1式:测算代码运行时间

平凡方法


快捷方法(jupyter环境)

第2式:测算代码多次运行平均时间

平凡方法


快捷方法(jupyter环境)

第3式:按调用函数分析代码运行时间

平凡方法



快捷方法(jupyter环境)

H. 用 Python 做策略回测,耗时很长,有什么加速办法

一个好的计算逻辑是很重要的啊,比如你去计算一个式子的时候,你去分析千百遍也不如你有一个好的运算方法。计算的时候一定要准备好计算方法,别的计算方法一定要统一规划。

使用计算机的时候能用计算机交易,这样能够克服你的暴躁的情绪。构建属于自己交易的水准,还有一些措施就是你要去看那些引导文档,不要自己去摸索。要有自己的专业的知识。

I. 怎样加快python官网上应用的下载速度

Python是一个很酷的语言,因为你可以在很短的时间内利用很少的代码做很多事情。不仅如此,它还能轻松地支持多任务,比如多进程等。Python批评者有时会说Python执行缓慢。本文将尝试介绍6个技巧,可加速你的Python应用程序。
1.让关键代码依赖于外部包

虽然Python让许多编程任务变得容易,但它可能并不总能为紧急的任务提供最佳性能。你可以为紧急的任务使用C、C++或机器语言编写的外部包,这样可以提高应用程序的性能。这些包都是不能跨平台的,这意味着你需要根据你正在使用的平台,寻找合适的包。简而言之,这个方案放弃了一些应用程序的可移植性,以换取只有在特定主机上直接编程才能获得的程序性能。这里有一些你应该考虑加入到你的“性能兵工厂”的包:

J. 使用python编程处理大量数据,效率太慢怎么解决

既然存有上千万个数据,为什么不使用数据库呢?
使用小型的sqlite数据库,加上适当的索引、筛选,肯定能大大提高数据处理速度。
python也自身带有处理sqlite数据库的模块,极其方便。

热点内容
手机ea服务器连不上怎么办 发布:2025-05-15 01:35:03 浏览:450
数据库数据插入语句 发布:2025-05-15 01:30:01 浏览:871
js是无需编译直接运行吗 发布:2025-05-15 01:28:30 浏览:476
android文件夹重命名 发布:2025-05-15 01:13:50 浏览:481
cns脚本 发布:2025-05-15 01:13:38 浏览:722
数据结构与算法笔试题 发布:2025-05-15 01:04:20 浏览:417
搜狗输入法如何直接编辑配置文件 发布:2025-05-15 00:51:47 浏览:668
电箱都有哪些配置 发布:2025-05-15 00:30:21 浏览:74
安卓qq邀请码在哪里寻找 发布:2025-05-15 00:02:04 浏览:35
三菱fx编程口 发布:2025-05-15 00:01:23 浏览:810