我尝试在一个循环中多次运行pyomo/python中的优化模型,其中只有一个可更改的参数,即c_param,并且c_param的值为1到170。我也在尝试使用并行计算来实现这一点,使用带有6个处理器的多处理模块。然而,我认为我在设置它的方式上有一些错误,因为多处理方法比没有多处理方法要慢。所以我有:
import multiprocessing as mp
# Global parameters defined here.
S = list(range(170))
def my_model(c_param):
# My pyomo model here
# Print model results to csv
if __name__ == "__main__":
c_param= [i + 1 for i in S]
pool = mp.Pool(6)
pool.map(my_model, S)
pool.close()
pool.join()我希望有170个csv文件打印出来。我可以用一个普通的循环很好地实现这一点,但这样做需要大约40个小时。我希望使用6个处理器将这一过程加速到6-7小时,但不知何故这需要更长的时间。我是不是做错了什么会减慢进程?提前感谢您的帮助!
发布于 2021-05-12 09:18:28
如果模型函数包含许多和/或深度嵌套的对象,则可能需要更长的时间,因为在将对象发送到其他进程之前,需要对对象进行pickled/序列化。然而,如果不知道模型函数中的内容,就很难判断。
https://stackoverflow.com/questions/67495365
复制相似问题