Python 程序在 LabVIEW 中无法正常运行,但可以自行运行
Posted
技术标签:
【中文标题】Python 程序在 LabVIEW 中无法正常运行,但可以自行运行【英文标题】:Python program don't work properly from LabVIEW, but works itself 【发布时间】:2021-12-15 02:42:00 【问题描述】:我有一个 python 程序,它通过 scipy.optimize.differential_evolution(...) 进行一些优化。如果我通过双击或 PyCharm(使用系统解释器,Python 3.6.8)启动它,我的 python 程序可以正常工作。但是,如果我尝试通过 Python Node 从 LabVIEW 2019(32 位)启动它,我会在使用差分进化方法时出错。问题出在差分进化方法中,因为当我关闭此方法时错误消失了。问题不能出在输入(来自 LabView)参数中,因为我现在不在我的函数中使用这些 LabView 参数。 我调用的函数显示在下面的 sn-p 上:
def make_in_labview()
#initialization of constants like bounds for optimization e. t. c.
...
# Main problem:
result = sp_opt.differential_evolution(func=myClass.deviation, bounds=optimization_bounds, args=[[empiric_set, funcs, False]],
strategy='best1bin', maxiter=10, tol=0.0001, popsize=30,
mutation=0.35, recombination=0.7, workers=2)
# (sp_opt - scipy.optimize)
return 0
这是 LabView 输出的主要错误:
函数名称:make_tomography
Python 返回以下错误:
这里是关于问题来源的看似无用的堆栈信息
*调用堆栈信息: make_tomography 中的文件“C:\Users...\main.py”,第 3171 行 结果 = chip.optimization_diff_evolution(optimization_bounds, [empiric_set, funcs, False])
文件“C:\Users...\main.py”,第 564 行,在 optimization_diff_evolution 中 突变=0.35,重组=0.7,工人=2)
文件“C:\Users\QPrac\AppData\Local\Programs\Python\Python36-32\lib\site-packages\scipy\optimize_differentialevolution.py”,第 307 行,在差分进化中 constraints=constraints) 作为求解器:
init 中的文件“C:\Users\QPrac\AppData\Local\Programs\Python\Python36-32\lib\site-packages\scipy\optimize_differentialevolution.py”,第 501 行 self._mapwrapper = MapWrapper(工人)
...
e.t.c.类似或关于多处理类似
文件“C:\Users\QPrac\AppData\Local\Programs\Python\Python36-32\Lib\multiprocessing\context.py”,第 119 行,在池中 上下文=self.get_context())*
你能帮我理解这个问题吗?
附:另外,我的 Windows 上只安装了 python 3.6.8.,32 位(因为它需要与 LabVIEW 32 位一起正常工作)。我的 Windows 是 64 位的,但我没有机会安装 LabVIEW 64 位。
【问题讨论】:
【参考方案1】:问题已解决:如果您使用 LabView 的 python 节点,您应该准确检查您如何将附加参数(即 scipy 手册中的“args”)传递给 scipy 的 diff 进化方法。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Python 程序在 LabVIEW 中无法正常运行,但可以自行运行的主要内容,如果未能解决你的问题,请参考以下文章