在Python中向函数传递太多参数
我正在开发一个程序,该程序对渗滤系统进行蒙特卡罗模拟(使用python)。为了能够从GUI(tkinter)运行它并使用多个进程,我在main()函数中定义了模拟的主要部分。问题是,这个程序是一个物理模拟,它需要很多参数(10+)。从main()调用的一些函数也需要很多参数,并且会被多次调用。例如,在我的main()中,我有一个generate_wire()函数,它接受8个参数,例如wires_mean_length、wires_distribution等。这个函数被调用了数百万次 这会影响项目的效率吗?这是应该修复的吗?如果是,如何修复 编辑:代码的结构基本如下:在Python中向函数传递太多参数,python,performance,arguments,simulation,python-internals,Python,Performance,Arguments,Simulation,Python Internals,我正在开发一个程序,该程序对渗滤系统进行蒙特卡罗模拟(使用python)。为了能够从GUI(tkinter)运行它并使用多个进程,我在main()函数中定义了模拟的主要部分。问题是,这个程序是一个物理模拟,它需要很多参数(10+)。从main()调用的一些函数也需要很多参数,并且会被多次调用。例如,在我的main()中,我有一个generate_wire()函数,它接受8个参数,例如wires_mean_length、wires_distribution等。这个函数被调用了数百万次 这会影响项目
def生成_线(“8个参数”):
“根据参数生成导线”
def main(“主要参数”):
对于范围内的(nbr sim):
尽管如此:
生成_线(“从主参数中选取8个参数”)
“各种计算”
如果渗流为真:
打破
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
“GUI代码”
“运行按钮使用GUI条目中的参数调用主函数”
实际上,与其他设计相比,这不会影响程序的运行时间
您可以将所有参数放入字典或自定义类中,并将其传递,以使逻辑更清晰
您可以将函数中的逻辑直接提升到循环中,这样可以减少查找的次数
def generate_wire_wrapper(“8个参数”):
对于范围内的(nbr sim):
“生成导线的逻辑”
“各种计算”
def main(“主要参数”):
生成\u wire\u wrapper(“8个参数取自主参数”)
然而,改进设计将是您在这里的真正盟友
与其在一个循环中调用同一个函数数千次,不如考虑
- 使用某种类型的a来并行处理
- 利用C语言中的逻辑(如果必须的话,也可以编写逻辑),使操作更加高效
科学图书馆的制图方法这样做是为了提高效率,其中一部分是通过每一步做更多的工作来规避GIL(例如,熊猫数据帧
。应用
方法就是这样做的)
df.apply
只是这项技术的一个例子,因此它可能根本不适用。但如果您有大量数据,它肯定会为您提供一个很好的解决方案。