私が今抱えている酸洗いエラーに対して、誰かが良い解決策を持っているかどうか疑問に思いました。いくつかの異なるプロセスを並行して開くようにコードを設定しようとしています。各プロセスには、matplotlibキャンバスにリアルタイムで表示されるフィッティングプロセスがあります。メインアプリケーション内に、この機能をアクティブにするボタンがあります。
def process_data(self):
process_list = []
for tab in self.tab_list:
process_list.append(mp.Process(target=process_and_fit, args=(tab,)))
process_list[-1].start()
process_list[-1].join()
return
お気づきかもしれませんが、「タブ」(PyQt4.QtGui.QTabWidgetオブジェクト)が関数process_and_fitに渡されますが、これは簡単に選択できないことに気づきました(ここにリンク)。ただし、渡されるフレームを削除するためにコードを変更する方法はわかりません。これは、process_and_fit関数で間接的に呼び出す必要があるためです。間接的に私はこのようなものを意味します:(再び疑似コード)
def process_and_fit(tab): # this just sets up and starts the fitting process
result = lmfit.Minimizer(residual, parameters, fcn_args=(tab,))
result.prepare_fit()
result.leastsq()
def residual(params, tab):
residual_array = Y - model
tab.refreshFigure()
return residual_array
class tab(QtGui.QTabWidget):
def __init__(self, parent, spectra):
# stuff to initialize the tab widget and hold all of the matplotlib lines and canvases
# This just refreshes the GUI stuff everytime that the parameters are fit in the least squares method
def refreshFigure(self):
self.line.set_data(self.spectra.X, self.spectra.model)
self.plot.draw_artist(self.line)
self.plot.figure.canvas.blit(self.plot.bbox)
プロセスに関連付けられたタブには1セットのデータのみが関連付けられている必要があるため、このピクルスエラーを回避する方法を知っている人はいますか?Steven Bethardのアプローチを見ましたが、コードをどこに置くか、どのように利用するかが本当にわかりませんでした。(私は化学技術者であり、コンピューター科学者ではないので、理解できないことがたくさんあります)
どんな助けでも大歓迎です。
編集:要求に応じて、忘れたリンクを追加しました。