我喜欢Python在模块之间的相对导入和代码简洁性。在对大量数据集执行操作时,我将使用python作为主要框架,然后可以通过使用FORTRAN等速度更快的语言编写的即插即用模块来处理计算量大的部分
在我当前的状态下,我有一个名为sigmareader
的包,它本质上是一个类;类是在__init__.py
中定义的,而方法是从它们各自的包中调用的。sigmareader
的结构如下所示:
sigmareader
├── __init__.py
├── _reader
│ ├── ...
├── ...
为了读取数据,我创建了sigmareader
的一个实例,并使用reader
方法。中的读取数据以适当的形式存储在实例的self
属性中
这本身就是一项相当繁重的计算任务。现在读取并存储数据后,我想继续进行产品计算。我预计产品计算同样复杂且计算量很大,因此我想将其作为一个单独的包,名为sigmaproduct
:
sigmaproduct
├── __init__.py
├── _cloudproduct
│ ├── ...
├── ...
产品计算需要输入存储在sigmareader
实例中的读取数据。我认为有三种方法可以做到这一点
第一种方法
使sigmaproduct
成为sigmareader
的子类
要说明工作流,请执行以下操作:
sigmaproduct_ins = sigmaproduct()
for dataset in dataset_lst:
sigmaproduct_ins.reader(dataset) # storing read data in instance
sigmaproduct_ins.cloudproduct() # reading and storing cloudproduct in instance
...further operations
第二种方法
使sigmaproduct
成为一个独立类,它使用sigmareader
的实例进行初始化。如果sigmareader
的实例已经激活了它的方法;i、 它已经将读取的数据存储在它的self
属性下
要说明工作流,请执行以下操作:
sigmareader_ins = sigmareader()
for dataset in dataset_lst:
sigmareader_ins.reader(dataset) # storing read data in instance
sigmaproduct_ins = sigmaproduct(sigmareader_ins) # creating instance of sigmaproduct
sigmaproduct_ins.cloudproduct() # reading and storing cloudproduct in instance
...further operations
第三种方法
使sigmaproduct
成为一个独立的类,它初始化为一个泛型对象,就像sigmareader
;i、 e.它的初始化独立于数据集。相反sigmaproduct
的方法需要sigmareader
实例的输入来计算乘积
要说明工作流,请执行以下操作:
sigmareader_ins = sigmareader()
sigmaproduct_ins = sigmaproduct()
for dataset in dataset_lst:
sigmareader_ins.reader(dataset) #storing read data in instance
sigmaproduct_ins.cloudproduct(sigmareader_ins) #computing and storing data stored in sigmareader_ins
... futher operations
由于每个包中有许多不同的方法,我希望尽可能保持sigmareader
和sigmaproduct
作为独立的类,因此我不喜欢使用第一种方法
然而,dataset_lst
包含大量的dataset
,因此我正在寻找计算上最优化的方法。哪一个是最好的?每种方法的优点和缺点是什么?有没有其他我错过的最佳方法
目前没有回答
相关问题 更多 >
编程相关推荐