相关疑难解决方法(0)

如果解释Python,什么是.pyc文件?

我已经理解Python是一种解释型语言......然而,当我查看我的Python源代码时,我看到了.pycWindows,它们识别为"编译的Python文件".这些来自哪里?

python compiled interpreted-language pyc

1017
推荐指数
10
解决办法
47万
查看次数

可以在Virtualenv上安装另一个版本的Python吗?

我在安装了Python 2.4的Web托管中有一个共享帐户,但我的代码与2.4不兼容.是否可以直接将Python 2.6安装到Virtualenv?

注意:我没有权限在共享服务器中安装它.

python virtualenv

145
推荐指数
3
解决办法
11万
查看次数

使用Cython编译主Python程序

我有一个Python2.6程序,可以使用Cython加载编译为.so文件的Python模块.我用Cython将.py模块编译成.so文件,一切正常.

这是我在Cython中使用的setup.py文件:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [
    Extension("ldap", ["ldap.pyx"]),
    Extension("checker", ["checker.pyx"]),
    Extension("finder", ["finder.pyx"]),
    Extension("utils", ["utils.pyx"]),
]

setup(
  name = 'bchecker',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)
Run Code Online (Sandbox Code Playgroud)

所以我知道我可以使用Cython编译Python模块(我猜Cython从我的Python文件创建'C'文件然后编译它们),但是我可以将我的主Python程序编译成可以在Linux平台上执行的程序吗?如果是这样,将欣赏Cython命令行示例.谢谢.

python cython

71
推荐指数
3
解决办法
6万
查看次数

numpy 比 Eigen C++ 更快、更高效?

最近,我和一位同事就 python 和 C++ 的性能比较进行了争论。我们俩主要使用这些语言来进行线性代数。所以我写了两个脚本,一个在 python3 中使用 numpy,另一个在 C++ 中使用 Eigen。

Python3 numpy版本matmul_numpy.py:

import numpy as np
import time
a=np.random.rand(2000,2000)
b=np.random.rand(2000,2000)
start=time.time()
c=a*b
end=time.time()
print(end-start) 
Run Code Online (Sandbox Code Playgroud)

如果我运行这个脚本

python3 matmul_numpy.py
Run Code Online (Sandbox Code Playgroud)

这将返回:

0.07 seconds
Run Code Online (Sandbox Code Playgroud)

C++ 特征版本 matmul_eigen.cpp:


#include <iostream>
#include <Eigen/Dense>
#include "time.h"
int main(){
        clock_t start,end;
        size_t n=2000;
        Eigen::MatrixXd a=Eigen::MatrixXd::Random(n,n);
        Eigen::MatrixXd b=Eigen::MatrixXd::Random(n,n);
        start=clock();
        Eigen::MatrixXd c=a*b;
        end=clock();
        std::cout<<(double)(end-start)/CLOCKS_PER_SEC<<std::endl;
        return 0;}
Run Code Online (Sandbox Code Playgroud)

我编译的方式是

g++ matmul_eigen.cpp -I/usr/include/eigen3 -O3 -march=native -std=c++17 -o matmul_eigen
Run Code Online (Sandbox Code Playgroud)

这将返回(c++11 和 c++17):

0.35 seconds
Run Code Online (Sandbox Code Playgroud)

这对我来说很奇怪,1-为什么 numpy 这里比 C++ 更快?我是否缺少任何其他优化标志?

我想也许是因为 python 解释器在这里执行程序更快。因此,我使用stacks …

c++ numpy compiler-optimization python-3.x eigen3

0
推荐指数
1
解决办法
2618
查看次数