如何解决问题TypeError:无法序列化'_io.BufferedWriter'对象?

时间:2019-10-23 00:41:59

标签: python pandas dataframe multiprocessing

    import pyomo
    from multiprocessing import Pool
    class a():
      def __init__():
         self.df1 = pd.DataFrame({"T": self.T})
         self.df2 = pd.DataFrame({"N": [1]})
         self.writer = pd.ExcelWriter("optdata.xlsx", engine='xlsxwriter')
         self.df1.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0)
         self.df2.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0 + len(self.df1.T))
         self.workbook = self.writer.book
         self.workbook.define_name('T', '=Sheet1!$A$1:$A$25')
         self.workbook.define_name('N', '=Sheet1!$B$1:$B$2')
         self.writer.save()

         self.df3 = pd.DataFrame({"T": self.T})
         self.df4 = pd.DataFrame({"N": [1]})
         self.writer = pd.ExcelWriter("optdata1.xlsx", engine='xlsxwriter')
         self.df3.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0)
         self.df4.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0 + len(self.df3.T))
         self.workbook = self.writer.book
         self.workbook.define_name('T', '=Sheet1!$A$1:$A$25')
         self.workbook.define_name('N', '=Sheet1!$B$1:$B$2')
         self.writer.save()

         self.pool = Pool(processes = 2)
         self.p1 = self.pool.map(self.createmodel, range(1))
         self.p2 = self.pool.map(self.createmodel1, range(1))

      def createmodel(self, num):
         self.model = Abstractmodel()
         self.model.T = Set()
         self.model.N = Set()

         self.model.p = Param(self.model.N, self.model.T)

         self.data = DataPortal(model=self.model)
         self.data.load(filename="optdata.xlsx", range="T", format="set", set="T")
         self.data.load(filename="optdata.xlsx", range="N", format="set", set="N")
         self.data.load(filename="optdata.xlsx", range="p", param="p", format="array")

         self.data.flow = Var(self.model.N, self.model.T)

         self.instance = self.model.create_instance(self.data)
         self.instance.pprint()

      def createmodel1(self, num):
         self.model1 = Abstractmodel()
         self.model1.T = Set()
         self.model1.N = Set()

         self.model1.p = Param(self.model1.N, self.model1.T)

         self.data1 = DataPortal(model=self.model1)
         self.data1.load(filename="optdata1.xlsx", range="T", format="set", set="T")
         self.data1.load(filename="optdata1.xlsx", range="N", format="set", set="N")
         self.data1.load(filename="optdata1.xlsx", range="p", param="p", format="array")

         self.data1.flow = Var(self.model1.N, self.model1.T)

         self.instance = self.model1.create_instance(self.data1)
         self.instance.pprint()

    if __name__ == "__main__":
         a()

我想使用Pyomo解决两个优化问题。当我运行此代码以并行运行两个优化模型时,出现错误 TypeError:无法序列化_io.BufferedWriter的对象。 如何解决此错误?有其他替代方法吗?

0 个答案:

没有答案