Python制造技术

技术编号:39664285 阅读:8 留言:0更新日期:2023-12-11 18:27
本申请涉及计算机语言技术领域,尤其涉及一种

【技术实现步骤摘要】
Python与Fortran互调用的方法、系统、设备及存储介质


[0001]本申请涉及计算机语言
,尤其涉及一种
Python

Fortran
互调用的方法

系统

设备及存储介质


技术介绍

[0002]C++

Python
的互调用是指在同一个程序中,同时使用
C++

Python
编写的代码能够相互调用彼此的函数和对象

在实际应用中,有时候需要在某个项目中同时使用
C++

Python。
例如,
C++
可能被用来实现性能敏感的算法,而
Python
则被用来进行数据处理和可视化等任务

此时需要将
C++

Python
代码集成到同一个程序中,并且能够相互调用,以便实现更加复杂和高效的应用

以上两者互调用有多种实现方式,例如通过
cPython
,将
Python
代码转换成
c
扩展模块,再将其导入
c++
程序中

[0003]Fortran
是一种为科学计算而设计的语言,其拥有许多内置的科学计算库,对于大规模计算

并行计算

数值计算等有着非常出色的表现
。Python
是一种高级语言,具有代码简洁易懂

易学易用等特点,应用于快速开发原型

实现数据分析和机器学习等领域
。Python
还有丰富的库和工具,支持多种编程范式,例如函数式编程和面向对象编程

在数值预报计算中会同时需要用到上述两种语言,取两种语言各自的优势领域进行应用

因此涉及到了两种语言的互相调用

再考虑到两种语言互相调用的可移植性,通过容器化的方式提供开箱即用的环境就显得十分必要

[0004]在当前的现实应用面向数值预报容器云平台的研发运维计算资源混合调度场景下,
kubernetes

slurm
作业混合调度平台

用户需要通过平台调用
kubernetes
的接口创建封装好的容器,并在容器中进行相关配置,这其中就包含了
Fortran

Python
的代码互相调用

[0005]但是目前
Fortran

Python
的互调用存在如下问题:并无支持
Python

Fortran
语言的互调用技术,两种编程语言的互相调用需要做特殊适配,例如不能将
C++

Python
的互调用技术直接应用到
Python

Fortran
的互调用过程中;
Fortran

Python
的互调用使用复杂,需要繁琐且复杂的环境配置流程,需要将代码编译为动态链接库或者函数库等中间态文件,并且为程序中的每个文件都进行单独的适配;维护成本高,使用
C++

Python
的互调用需要维护两种不同的代码库,并确保它们之间的兼容性和正确性

这会增加程序的维护成本,尤其是在项目规模较大或者开发周期较长时;
Fortran

Python
的互调用需要依赖多个依赖库,这些库可能会带来额外的依赖关系

配置和编译问题,增加了开发和部署的复杂性

[0006]综上所述,如何能够在面向数值预报容器云平台的研发运维计算资源混合调度场景下实现
Fortran

Python
的互调用,同时解决维护成本高以及配置环境复杂的问题是目前面临的难题


技术实现思路

[0007]本申请提供了一种
Python

Fortran
互调用的方法

系统

设备及存储介质,可以解决在面向数值预报容器云平台的研发运维计算资源混合调度场景下实现
Fortran

Python
的互调用,同时解决维护成本高以及配置环境复杂的问题

本申请提供如下技术方案:
[0008]第一方面,本申请提供一种
Python

Fortran
互调用的方法,所述方法包括:
[0009]下载镜像文件,在计算机系统中安装容器引擎,所述容器引擎用于在本地启动容器并运行镜像;
[0010]使用镜像启动容器;
[0011]将
Fortran
代码与
Python
代码挂载到容器中;
[0012]判断
Python

Fortran
语言的互调用方式:
[0013]当
Python
调用
Fortran
时,将
Fortran
代码转换为
Python
模块,修改
Python
代码,调用
Fortran
语言转换出的模块;
[0014]当
Fortran
调用
Python
时,将
Python
代码转换为
C++
可调用的库,修改
Fortran
代码并将
C++
库中的函数包装成可供
Fortran
调用的子程序,在
Fortran
代码中调用已经包装的
C++
子程序;
[0015]启动
Python
程序,等待
Python
程序运行结束,并查看运行结果

[0016]在一个具体的可实施方案中,所述在计算机系统中安装容器引擎包括:
[0017]安装
Docker、containerd
或者
crio
等容器引擎,以便能够在本地使用
Docker
启动容器并运行镜像

[0018]在一个具体的可实施方案中,所述使用镜像启动容器包括:
[0019]在命令行终端中,使用
Docker
命令启动某个容器,同时使用
Docker Hub
或者
harbor
等公共资源库中的相关命令来查找和下载镜像;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
Python

Fortran
互调用的方法,其特征在于,所述方法包括:下载镜像文件,在计算机系统中安装容器引擎,所述容器引擎用于在本地启动容器并运行镜像;使用镜像启动容器;将
Fortran
代码与
Python
代码挂载到容器中;判断
Python

Fortran
语言的互调用方式:当
Python
调用
Fortran
时,将
Fortran
代码转换为
Python
模块,修改
Python
代码,调用
Fortran
语言转换出的模块;当
Fortran
调用
Python
时,将
Python
代码转换为
C++
可调用的库,修改
Fortran
代码并将
C++
库中的函数包装成可供
Fortran
调用的子程序,在
Fortran
代码中调用已经包装的
C++
子程序;启动
Python
程序,等待
Python
程序运行结束,并查看运行结果
。2.
根据权利要求1所述的
Python

Fortran
互调用的方法,其特征在于,所述在计算机系统中安装容器引擎包括:安装
Docker、containerd
或者
crio
等容器引擎,以便能够在本地使用
Docker
启动容器并运行镜像
。3.
根据权利要求1所述的
Python

Fortran
互调用的方法,其特征在于,所述使用镜像启动容器包括:在命令行终端中,使用
Docker
命令启动某个容器,同时使用
Docker Hub
或者
harbor
等公共资源库中的相关命令来查找和下载镜像;使用适当的参数,指定要启动的容器名称

要使用的镜像名称以及其他相关参数,如端口号

挂载卷等
。4.
根据权利要求1所述的
Python

Fortran
互调用的方法,其特征在于,所述将
Fortran
代码与
Python
代码挂载到容器中之前还包括:确保要挂载的代码文件已经存储在本地计算机的某个目录中,以便能够将其挂载到容器中;使用
Docker
命令,将本地的目录与容器中的目录进行映射,以便能够在容器中访问本地代码文件
。5.
根据权利要求1所述的
Python

Fortran
互调用的方法,其特征在于,所述将
Fortran
代码转换为
Python
模块包括:使用
docker
命令进入到容器中,使用镜像中的转换工具
F2PY

Fortran
代码转换为

【专利技术属性】
技术研发人员:韩毅朱俊星汪祥任开军张卫民王辉赞李小勇
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1