栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

python调用c++,提升运算2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python调用c++,提升运算2

#include "iostream"

using namespace std;

class Calc {
public:
    int add(int a, int b);

    void sf();
};

int Calc::add(int a, int b) {
    cout << "收到参数为a,b: " << a << " " << b << endl;
    return a + b;
}

void Calc::sf() {
    for (int i = 0; i < 1001; i++) {
        for (int j = 0; j < 1001; j++) {
            for (int k = 0; k < 1001; k++) {
                if (i * i + j * j == k * k && i + j + k == 1000) {
                    cout << i << "," << j << "," << k << endl;
                }
            }
        }
    }
}

extern "C" {
Calc calc;
int add(int a, int b) {
    return calc.add(a, b);
}

void sf() {
    calc.sf();
}
};

g++ -finput-charset=UTF-8 -fexec-charset=GBK -o add.so -shared -fPIC add.cpp

import ctypes
import time

dll = ctypes.cdll.LoadLibrary

calc_lib = dll('./add.so')

r = calc_lib.add(3, 5)
print(r)

t1 = time.time()

# 运算300多秒 5分钟
# for i in range(1001):
#     for j in range(1001):
#         for k in range(1001):
#             if i * i + j * j == k * k and i + j + k == 1000:
#                 print(i, j, k)

# 运行1.6s即可完成
calc_lib.sf()

t2 = time.time()
print(t2-t1)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号