<p>最后,我通过一个包含一个新类的解决方案和一个闭包函数来解决我的问题,该闭包函数用于处理<a href="https://stackoverflow.com/a/65174074/9811491">here</a>中描述的<code>self</code>参数。除此之外,新创建的方法的垃圾收集还会出现另一个问题</p>
<p>我的最终解决办法是:</p>
<pre><code>class spectrometer():
def measurement_callback(self,handle,info):
if info.contents.value >= 0:
timestamp,spectrum = self.ava.get_data()
self.spectral_data[self.spectrum_index,:] = np.ctypeslib.as_array(spectrum[0:pixel_amount])
self.timestamps[self.spectrum_index] = timestamp
self.spectrum_index += 1
def __init__(self,ava):
self.ava = ava
self.measurement_callback = MeasureCallback(self.measurement_callback)
def register_callback(self,scans,pattern_amount,pixel_amount):
self.spectrum_index = 0
self.timestamps = np.empty((pattern_amount),dtype=np.uint32)
self.spectral_data = np.empty((pattern_amount,pixel_amount),dtype=np.float64)
self.ava.measure_callback(scans, self.measurement_callback)
</code></pre>