【问题标题】:Metaprogramming - change representation of SIMD calculation元编程 - 更改 SIMD 计算的表示
【发布时间】:2020-09-03 15:27:11
【问题描述】:

在进行并行/SIMD 工作时,我经常在函数f 中用下面的语法表示计算。不过写起来有点容易出错,我想用g中定义的语法来写。有什么方法可以从f 中的语法转换为g

dta=[[0,0,0,0],[0,0,0,0]]

VAR_ONE, VAR_TWO = range(2)

def f(ln): 
    dta[VAR_ONE][ln] = dta[VAR_ONE][ln] + 1

def g():
    VAR_ONE = VAR_ONE + 1


for ln in range(4):
    f(ln) 

【问题讨论】:

    标签: python metaprogramming


    【解决方案1】:

    我不确定您在寻找什么,但这里有一个猜测。您可以创建一个具有允许您想要的东西的属性的类(我认为)。

    这就是我的意思:

    class Class:
        _VAR_ONE, _VAR_TWO = range(2)
    
        def __init__(self, dta, ln):
            self.dta = dta
            self.ln = ln
    
        def _getter(self):
            return self.dta[self._VAR_ONE][self.ln]
    
        def _setter(self, value):
            self.dta[self._VAR_ONE][self.ln] = value
    
        VAR_ONE = property(_getter, _setter)
    
        def g(self):
            self.VAR_ONE = self.VAR_ONE + 1
    
    
    dta = [[0,0,0,0], [0,0,0,0]]
    
    for ln in range(4):
        inst = Class(dta, ln)
        inst.g()
    
    print(dta)  # -> [[1, 1, 1, 1], [0, 0, 0, 0]]
    

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2012-01-25
      • 2010-11-27
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      相关资源
      最近更新 更多