精华内容
下载资源
问答
  • python-weave

    2018-08-05 01:23:40
    weave的安装包,具体安装过程,先切换到cmd模式,然后再切换到文件目录。然后执行命令 python setup.py install
  • File "C:\Python27\lib\site-packages\scipy\weave\inline_tools.py", line 496, in compile_function verbose=verbose, **kw) File "C:\Python27\lib\site-packages\scipy\weave\ext_tools.py", line 373, in ...
  • python科学计算——用Weave嵌入C语言

    热门讨论 2021-03-27 07:46:15
    先提醒一下大家,在2021年2月18日的SciPy 0.15.0 Release Notes中, weave模块已经被弃用,它是唯一一个没有被移植到Python 3的模块。并且不建议在新代码中使用,官方建议使用Cython替代他。 Weave只能在python2环境...

    最近因为项目需求,需要用到C++/Python混合编程,今天无意间发现了scipy的一个远古模块weave也可以在python中嵌入C语言的库,就鼓捣了一下(我真闲o(╥﹏╥)o)

    先提醒一下大家,在2021年2月18日的SciPy 0.15.0 Release Notes中, weave模块已经被弃用,它是唯一一个没有被移植到Python 3的模块。并且不建议在新代码中使用,官方建议使用Cython替代他。
    Weave只能在python2环境中使用。

    weave简介

    Python作为动态语言其功能虽然强大,但是在数值计算方面有一个最大的缺点:速度不够快。在Python级别的循环和计算的速度只有C语言程序的百分之一。因此才有了NumPy, SciPy这样的函数库,将高度优化的C、Fortran的函数库进行包装,以供Python程序调用。如果这些高度优化的函数库无法实现我们的算法,必须从头开始写循环、计算的话,那么用Python来做显然是不合适的。因此SciPy提供了快速调用C++语言程序的方法-- Weave。

    安装

    为了支持现有的代码,scipy.weave已单独打包:https://github.com/scipy/weave。它是一个纯Python包,可以很容易地用pip安装。
    安装:

    pip install weave
    

    参考:https://docs.scipy.org/doc/scipy/reference/release.0.15.0.html

    测试

    # -*- coding: utf-8 -*-
    import weave
    import numpy as np
    import time
    
    def my_sum(a):
        n=int(len(a))
        code="""
        int i;
    
        double counter;
        counter =0;
        for(i=0;i<n;i++){
            counter=counter+a(i);
        }
        return_val=counter;
        """
    
        err=weave.inline(
            code,['a','n'],
            type_converters=weave.converters.blitz,
            compiler="gcc"
        )
        return err
    
    a = np.arange(0, 10000000, 1.0)
    # 先调用一次my_sum,weave会自动对C语言进行编译,此后直接运行编译之后的代码
    my_sum(a)
    
    start = time.clock()
    for i in xrange(100):
        my_sum(a)  # 直接运行编译之后的代码
    print "my_sum:", (time.clock() - start) / 100.0
    
    start = time.clock()
    for i in xrange(100):
        np.sum( a ) # numpy中的sum,其实现也是C语言级别
    print "np.sum:", (time.clock() - start) / 100.0
    
    start = time.clock()
    print sum(a) # Python内部函数sum通过数组a的迭代接口访问其每个元素,因此速度很慢
    print "sum:", time.clock() - start
    

    运行结果:

    my_sum: 0.0294527349146
    np.sum: 0.0527649547638
    sum: 9.11022322669

    可以看到用Weave编译的C语言程序比numpy自带的sum函数还要快。而Python的内部函数sum使用数组的迭代器接口进行运算,因此速度是Python语言级别的,只有Weave版本的1/300。

    weave.inline函数的第一个参数为需要执行的C++语言代码,第二个参数是一个列表,它告诉weave要把Python中的两个变量a和n传递给C++程序,注意我们用字符串表示变量名。converters.blitz是一个类型转换器,将numpy的数组类型转换为C++的blitz类。C++程序中的变量a不是一个数组,而是blitz类的实例,因此它使用a(i)获得其各个元素的值,而不是用a[i]。最后我们通过compiler参数告诉weave要采用gcc为C++编译器。如果你安装的是python(x,y)的话,gcc(mingw32)也一起安装好了,否则你可能需要手工安装gcc编译器或者微软的Visual C++。

    参考:https://docs.huihoo.com/scipy/scipy-zh-cn/scipy_intro.html#b-spline

    展开全文
  • python源代码输入TexGen,可对三维编织体进行几何建模。
  • python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )》http://blog.csdn.net/lainegates/article/details/19565823目前有很多开源的Python/c++ 绑定工具,搜了好多岾子,这里稍微总结下...

    《python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )》http://blog.csdn.net/lainegates/article/details/19565823

    目前有很多开源的Python/c++ 绑定工具,搜了好多岾子,这里稍微总结下。

    SWIG

    支持 Python 2 and 3

    配置正确的话,可以全自动完成封装(*.i文件需要自己写)

    当不是全自动的时候,它大多会重复你的.h文件并给出提示

    除了Python外,还支持其他语言(Java, Ruby, Lua, 等)

    输出一个本地文件(这个文件会被编译成.pyd)和一个封装(这个封装是python脚本,调用对应生成的.pyd)

    绑定(Bindings)的性能不是太好,不支持内部类(inner classes)的封装

    不支持属性(通过getter/setters访问values)

    文档很全,很容易学习

    google使用了

    C++支持不太好

    Boost::Python

    支持 Python 2, 3和C++的绑定

    对于新手来说,学习它的语法有一定难度。但是这些语法很直观

    大量使用了 C++ templates (可能是好事,也可能是坏事),会很明显地提高编译时间

    随boost库一起发布,且boost库有用,但很大

    刚开始编译使用boost.python封装好的C++代码时,出现的各种错误

    一些语法不易学习,像函数返回值时的规则

    非常可靠、稳定、经过充分测试的库(boost库里的部件都具有这特性)

    不支持属性

    支持文档写得比较差,有些功能文档里甚至都没有写。

    编译后的pyd文件有些大,这不利于在手机或者嵌入平台使用

    配合py++使用,几乎可以全自动封装项目

    Py++

    支持 Python 2, 3 和C++的绑定

    它调用boost.python自动完成项目绑定,相当于boost.python的高级工具

    PyCxx

    支持 Python 2, 3 和C++的绑定

    轻量级的封装库,用的人挺多

    只支持C++

    目前没有自动绑定工具

    Python C api(Python 的帮助文档里有)

    性能高

    灵活

    适合嵌入式

    C++支持差

    复杂

    ctypes(Python自带的库)

    灵活

    对c的代码几乎无缝调用

    使用起来比较繁琐

    只支持c语言

    SIP

    支持 Python 2, 3 和C++的绑定

    在PyQt中使用过,其他地方很少见它

    Weave

    性能高

    很少见

    Pyrex

    很少见

    目前还没有成熟的项目

    性能较高

    接近于Python语法

    参考:http://stackoverflow.com/questions/1492755/python-c-binding-library-comparison

    http://web.archive.org/web/20090604182721/http://www.suttoncourtenay.org.uk/duncan/accu/integratingpython.html

    https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages

    《Python扩展方法及工具比较》http://www.cdadata.com/4224

    使用工具进行扩展:

    虽然扩展过程并不复杂,但也可以使用许多已知的工具简化扩展过程。

    (1) SWIG

    由David Beazley创建,是一个自动的扩展构造工具。它读入注释的C/C++头文件,为python、tcl、perl等多种脚本语言产生wrap代码。SWIG可以包装大量C++特性到Python的扩展模块中。详情可参考http://www.swig.org。

    评价:swig简单,可以支持多种脚本文件,但支持的c++特性不完备。

    (2) SIP

    由Phil Thompson创建,是一个C++模块构造器,专门为C++的类创造wrapper。它曾经被用于创建PyQt和PyKDE扩展模块,因此比较出名。详情可参考http://www.riverbankcomputing.co.uk/sip/。

    评价:支持C++特征很齐全,但比较复杂。

    (3) bgen

    该工具被包含在标准Python发布包中的模块构建工具集里,由Jack Jansen维护。它用于产生在Macintosh版本可用的Python扩展模块。

    (4) pyfort

    由Paul dubois创建,用来产生Fortran语言生成的扩展模块。详见http://pyfortran.sourceforge.net。

    (5) cxx

    也由Paul Dubois创建,是一个库,为Python的C++扩展提供了友好的API。Cxx允许将许多python对象(如list和tuple)使用到STL的运算中。库也提供了C++异常处理到python异常处理的转化。详见http://cxx.sourceforge.net。

    (6) WrapPy

    由Greg Couch创建,通过读入C++头文件来产生扩展模块。详见http://www.cgl.ucsf.edu/home/gregc/wrappy/index.html。

    (7) Boost Python Library

    由David Abrahams创建。该库提供了更多与众不同的C++ wrap到python扩展中,而只需要对要扩展的C++类写很少的附加信息。详见http://www.boost.org/libs/python/doc。

    评价:Boost为C++提供了许多实用的库,如Regex(正则表达式库)、Graph(图组件和算法)、concept check(检查泛型编程中的concept)、Thread(可移植的C++多线程库)、Python(把C++类和函数映射到Python之中)、Pool(内存池管理)等等。

    Boost总体来说是实用价值很高,质量很高的库。并且强调对跨平台的支持。但是Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。

    boost.python支持的c++特性较多,但是比较复杂。

    展开全文
  • python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )》http://blog.csdn.net/lainegates/article/details/19565823 目前有很多开源的Python/c++ 绑定工具,搜了好多岾子,这里稍微总结...

    《python/c++接口库比较(SWIG,boost.python, pycxx, py++, sip, Weave, Pyrex )》http://blog.csdn.net/lainegates/article/details/19565823

    目前有很多开源的Python/c++ 绑定工具,搜了好多岾子,这里稍微总结下。

    SWIG

    • 支持 Python 2 and 3
    • 配置正确的话,可以全自动完成封装(*.i文件需要自己写)
    • 当不是全自动的时候,它大多会重复你的.h文件并给出提示
    • 除了Python外,还支持其他语言(Java, Ruby, Lua, 等)
    • 输出一个本地文件(这个文件会被编译成.pyd)和一个封装(这个封装是python脚本,调用对应生成的.pyd)
    • 绑定(Bindings)的性能不是太好,不支持内部类(inner classes)的封装
    • 不支持属性(通过getter/setters访问values)
    • 文档很全,很容易学习
    • google使用了
    • C++支持不太好

    Boost::Python

    • 支持 Python 2, 3和C++的绑定
    • 对于新手来说,学习它的语法有一定难度。但是这些语法很直观
    • 大量使用了 C++ templates (可能是好事,也可能是坏事),会很明显地提高编译时间
    • 随boost库一起发布,且boost库有用,但很大
    • 刚开始编译使用boost.python封装好的C++代码时,出现的各种错误
    • 一些语法不易学习,像函数返回值时的规则
    • 非常可靠、稳定、经过充分测试的库(boost库里的部件都具有这特性)
    • 不支持属性
    • 支持文档写得比较差,有些功能文档里甚至都没有写。
    • 编译后的pyd文件有些大,这不利于在手机或者嵌入平台使用
    • 配合py++使用,几乎可以全自动封装项目

    Py++

    • 支持 Python 2, 3 和C++的绑定
    • 它调用boost.python自动完成项目绑定,相当于boost.python的高级工具

    PyCxx

    • 支持 Python 2, 3 和C++的绑定
    • 轻量级的封装库,用的人挺多
    • 只支持C++
    • 目前没有自动绑定工具

    Python C api(Python 的帮助文档里有)

    • 性能高
    • 灵活
    • 适合嵌入式
    • C++支持差
    • 复杂

    ctypes(Python自带的库)

    • 灵活
    • 对c的代码几乎无缝调用
    • 使用起来比较繁琐
    • 只支持c语言

    SIP

    • 支持 Python 2, 3 和C++的绑定
    • 在PyQt中使用过,其他地方很少见它

    Weave

    • 性能高
    • 很少见

    Pyrex

    • 很少见
    • 目前还没有成熟的项目
    • 性能较高
    • 接近于Python语法

    参考:http://stackoverflow.com/questions/1492755/python-c-binding-library-comparison

    http://web.archive.org/web/20090604182721/http://www.suttoncourtenay.org.uk/duncan/accu/integratingpython.html

    https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages

     

    《Python扩展方法及工具比较》http://www.cdadata.com/4224

    使用工具进行扩展:
    虽然扩展过程并不复杂,但也可以使用许多已知的工具简化扩展过程。
    (1) SWIG
    由David Beazley创建,是一个自动的扩展构造工具。它读入注释的C/C++头文件,为python、tcl、perl等多种脚本语言产生wrap代码。SWIG可以包装大量C++特性到Python的扩展模块中。详情可参考http://www.swig.org。
    评价:swig简单,可以支持多种脚本文件,但支持的c++特性不完备。

    (2) SIP
    由Phil Thompson创建,是一个C++模块构造器,专门为C++的类创造wrapper。它曾经被用于创建PyQt和PyKDE扩展模块,因此比较出名。详情可参考http://www.riverbankcomputing.co.uk/sip/。
    评价:支持C++特征很齐全,但比较复杂。

    (3) bgen
    该工具被包含在标准Python发布包中的模块构建工具集里,由Jack Jansen维护。它用于产生在Macintosh版本可用的Python扩展模块。

    (4) pyfort
    由Paul dubois创建,用来产生Fortran语言生成的扩展模块。详见http://pyfortran.sourceforge.net。

    (5) cxx
    也由Paul Dubois创建,是一个库,为Python的C++扩展提供了友好的API。Cxx允许将许多python对象(如list和tuple)使用到STL的运算中。库也提供了C++异常处理到python异常处理的转化。详见http://cxx.sourceforge.net。

    (6) WrapPy
    由Greg Couch创建,通过读入C++头文件来产生扩展模块。详见http://www.cgl.ucsf.edu/home/gregc/wrappy/index.html。

    (7) Boost Python Library
    由David Abrahams创建。该库提供了更多与众不同的C++ wrap到python扩展中,而只需要对要扩展的C++类写很少的附加信息。详见http://www.boost.org/libs/python/doc。
    评价:Boost为C++提供了许多实用的库,如Regex(正则表达式库)、Graph(图组件和算法)、concept check(检查泛型编程中的concept)、Thread(可移植的C++多线程库)、Python(把C++类和函数映射到Python之中)、Pool(内存池管理)等等。
    Boost总体来说是实用价值很高,质量很高的库。并且强调对跨平台的支持。但是Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。
    boost.python支持的c++特性较多,但是比较复杂。

    转载于:https://www.cnblogs.com/onduty/p/5838162.html

    展开全文
  • ##########测试环境EPD7.0.2from scipy.weave import inline from scipy.weave import convertersdef test(): x=list(range(10)) code = """ int i; for (i=0; i ; i++
    ##########测试环境EPD7.0.2
    
    from scipy.weave import inline   
    from scipy.weave import converters
    def test():
        x=list(range(10))  
        code = """ 
        int i;           
        for (i=0; i < 10; i++) 
        {                           
        x[i] = 1;           
        }            
        """     
        inline(code, ["x"],type_converters=converters.blitz,compiler = 'gcc')     
        return x 
    x=test() 
    print x
    
    ####输出信息########################
    
    #Found executable C:/Python27/Scripts/g++.exe
    #[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    
    ####输出信息########################
    

    展开全文
  • Speeding up Python (NumPy, Cython, and Weave)

    千次阅读 2014-01-20 12:50:23
    The high-level nature of Python makes it very easy to program, read, and reason about code. Many programmers report being more productive in Python. For example, Robert Kern once told me that "Pytho
  • python

    2017-01-10 18:33:24
    前言: 本文主要描述了使用Python进行...对很多人来说,Python是一种很容易让人喜爱的语言,自从1991年Python创始以来, Python已经是最受欢迎的动态编程语言之一,其他的类似语言还有Perl,Ruby等等,Python和Rub
  • powerful python

    2018-07-04 10:34:08
    Powerfully and easily weave iterators and generators throughout your applications, making them massively scalable, highly performant, and far more readable and maintainable How to fully leverage ...
  • Python-2.7.5

    2018-04-15 20:40:29
    python-2.7.5.exe - Lux_Sun CSDN Blog:https://blog.csdn.net/Dream_Weave
  • Python-3.6.5

    2018-04-08 09:39:48
    python-3.6.5.exe - Lux_Sun CSDN Blog:https://blog.csdn.net/Dream_Weave
  • 使用 Python 和另一种语言混编的好处 至少有以下四个原因: Best of both worlds - 结合两种语言的优点:已经优化和测试过的代码库 + Python 的灵活 Python as glue - Python 作为连接的桥梁,将很多其他语言的...
  • python-sdk-源码

    2021-03-10 11:34:55
    使用python与fQR Weave平台进行交互 安装 在您的终端中: pip install fqrweaveSDK或pip install git+https://github.com/fQR-Weave/python-sdk.git 连接您的钱包: from fqrweaveSDK import Fqrweave , Tools ...
  • SCIentific PYthon 简介 Ipython 提供了一个很好的解释器界面。 Matplotlib 提供了一个类似 Matlab 的画图工具。 Numpy 提供了 ndarray 对象,可以进行快速的向量化计算。 Scipy 是 Python 中进行科学计算的一个第三...
  • 引入Brillo和Weave

    2020-06-11 09:04:10
    尽管在2015年Google I / O大会上宣布了它们,但Brillo和Weave是Google的两项新技术,对于一般开发人员社区来说仍然是个谜。 幸运的是,在2016年1月的Ubiquity会议上,Google对这两种技术进行了更多介绍。在本文中,...
  • python笔记

    千次阅读 2017-06-08 14:22:49
    这里记录了从学习python以来的笔记,包括一些常用的python方法,希望能对初学者有帮助 标准库http://python.usyiyi.cn/python_278/library/index.html eval 将str当成表达式,不用完整语句 exec 执行 search匹配...
  • Atom支持Weave.jl和Pweave 和文档的Atom语法突出显示。 提供以下模式: Weave.jl: markdown .jmd,.mdw和.jmdw的markdown(使用noweb的markdown) Weave.jl: LaTex用于texw,.jtexw和.jnw。 Weave.jl: ...
  • scipy.weave

    2020-01-19 10:19:31
    python37中 from scipy import weave 报错 ImportError: cannot import name ‘weave’ from ‘scipy’ 是为什么?还请大佬指点解决办法!!
  • Sage-weave提供了一个用于混合文本和代码以自动生成文档的框架,类似于R语言的 。 Sage-weave允许您创建一个包含LaTeX文本和Sage代码的单个源文件。 然后将它们“编织”到最终的LaTeX文档中,该文档包含原始文本...
  • 目录第1章 软件包的安装和介绍 11.1 Python简介 11.2 安装软件包 21.2.1 Python(x,y) 21.2.2 Enthought Python Distribution(EPD) 31.3 方便的开发工具 31.3.1 IPython 41.3.2 Spyder 81.3.3 Wing IDE 101 121.4 ...
  • python 异步数据库_异步Python和数据库

    千次阅读 2020-07-13 04:15:54
    python 异步数据库The asynchronous programming topic is difficult to cover. These days, it’s not just about one thing, and I’m mostly an outsider to it. However, because I deal a lot with relational ...
  • $ sudo ./dns-tests.py -w $GOPATH/src/github.com/zettio/weave/weavedns/weavedns 要求: mininet (apt-get install mininet) dnspython (apt-get install python-dnspython) 请求(apt-get install python-...
  • Python入门

    2018-08-22 14:28:00
    Python(特点:优雅、明确、简单) 一、简介: 1989年,Python是解释型语言,不能加密,直接发布源码,Python 是现在最受欢迎的动态 (当我们定义了一个class,创建了一个class的实例后,我们可以给该实例...
  • 你可以在这个链接的底部找到一些有用的结果从介绍开始A comparison of weave with NumPy, Pyrex, Psyco, Fortran (77 and 90) and C++ for solving Laplace's equation.它还比较了MATLAB,并显示了与使用Python和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,195
精华内容 478
关键字:

pythonweave

python 订阅