【发布时间】:2020-10-29 16:02:54
【问题描述】:
我正在开发一个执行渗透系统蒙特卡罗模拟的程序(使用 python)。为了能够从 GUI (tkinter) 运行它并使用多个进程,我在 main() 函数中定义了模拟的主要部分。问题是,这个程序是一个物理模拟,它需要很多参数(10+)。从 main() 调用的一些函数也需要很多参数,并且被调用很多次。例如,在我的 main() 中,我有一个 generate_wire() 函数,它接受 8 个参数,例如 wires_mean_length、wires_distribution 等。这个被调用了数百万次。
这会影响程序的效率吗?是否应该修复它,如果是,如何修复?
编辑:代码基本结构如下:
def generate_wire("8 parameters"):
"generating a wire according to the parameters"
def main("main parameters"):
for _ in range(nbr_sim):
while True:
generate_wire("8 parameters taken from the main parameters")
"Various calculations"
if percolation is True:
break
if __name__ == '__main__':
"GUI code"
"Run button calls the main function with parameters from GUI entries"
【问题讨论】:
-
请展示一些代码或研究,是的,它可能会影响性能
-
完成! Ty 为您解答
-
现在我开始明白我对效率一无所知但是我知道多个参数可能不是问题,除非可能是为了组织并且如果计算过程没有以图形方式显示(可能只是结果) 那么它不应该是低效的,但是对于巨大的循环,它需要一些时间(不能准确地告诉多少,实际上可以测量)
-
确实没有显示计算,只存储了结果。测量它是个好主意,我会试试看。
-
我已经运行了 foo 函数 100,000 次。使用全局变量后,另一个将 15 个参数传递给函数。我没有得到两个过程之间的任何显着时间差异。当然,这并不能证明什么,但我认为这两种方法都相当有效。
标签: python performance arguments simulation python-internals