Пример #1
0
    def GiveDicoJonesMatrices(self):
        print >> log, "  Getting Jones matrices from Shared Memory"
        DicoJonesMatrices = {}

        GD = self.GD

        SolsFile = GD["DDESolutions"]["DDSols"]

        if SolsFile != "":
            DicoJones_killMS = NpShared.SharedToDico("%sJonesFile_killMS" %
                                                     self.IdSharedMem)
            DicoJonesMatrices["DicoJones_killMS"] = DicoJones_killMS
            DicoJonesMatrices["DicoJones_killMS"][
                "MapJones"] = NpShared.GiveArray("%sMapJones_killMS" %
                                                 self.IdSharedMem)
            DicoClusterDirs_killMS = NpShared.SharedToDico(
                "%sDicoClusterDirs_killMS" % self.IdSharedMem)
            DicoJonesMatrices["DicoJones_killMS"][
                "DicoClusterDirs"] = DicoClusterDirs_killMS

        ApplyBeam = (GD["Beam"]["Model"] is not None)
        if ApplyBeam:
            DicoJones_Beam = NpShared.SharedToDico("%sJonesFile_Beam" %
                                                   self.IdSharedMem)
            DicoJonesMatrices["DicoJones_Beam"] = DicoJones_Beam
            DicoJonesMatrices["DicoJones_Beam"][
                "MapJones"] = NpShared.GiveArray("%sMapJones_Beam" %
                                                 self.IdSharedMem)
            DicoClusterDirs_Beam = NpShared.SharedToDico(
                "%sDicoClusterDirs_Beam" % self.IdSharedMem)
            DicoJonesMatrices["DicoJones_Beam"][
                "DicoClusterDirs"] = DicoClusterDirs_Beam

        return DicoJonesMatrices
Пример #2
0
    def giveDicoInitIndiv(self,
                          ListIslands,
                          ModelImage,
                          DicoDirty,
                          ListDoIsland=None,
                          Parallel=True):
        NCPU = self.NCPU
        work_queue = multiprocessing.JoinableQueue()
        ListIslands = ListIslands  #[300:308]
        DoIsland = True

        for iIsland in range(len(ListIslands)):
            if ListDoIsland is not None:
                DoIsland = ListDoIsland[iIsland]
            if DoIsland: work_queue.put({"iIsland": iIsland})

        result_queue = multiprocessing.JoinableQueue()
        NJobs = work_queue.qsize()
        workerlist = []

        logger.setSilent(SilentModules)
        #MyLogger.setLoud(SilentModules)

        #MyLogger.setLoud("ClassImageDeconvMachineMSMF")

        print >> log, "Launch MORESANE workers"
        for ii in range(NCPU):
            W = WorkerInitMSMF(work_queue, result_queue, self.GD,
                               self.DicoVariablePSF, DicoDirty, self.RefFreq,
                               self.GridFreqs, self.DegridFreqs,
                               self.MainCache, ModelImage, ListIslands,
                               self.IdSharedMem)
            workerlist.append(W)
            if Parallel:
                workerlist[ii].start()

        timer = ClassTimeIt.ClassTimeIt()
        pBAR = ProgressBar(Title="  MORESANing islands ")
        #pBAR.disable()
        pBAR.render(0, NJobs)
        iResult = 0
        if not Parallel:
            for ii in range(NCPU):
                workerlist[ii].run()  # just run until all work is completed

        self.DicoInitIndiv = {}
        while iResult < NJobs:
            DicoResult = None
            if result_queue.qsize() != 0:
                try:
                    DicoResult = result_queue.get()
                except:
                    pass

            if DicoResult == None:
                time.sleep(0.5)
                continue

            if DicoResult["Success"]:
                iResult += 1
                NDone = iResult

                pBAR.render(NDone, NJobs)

                iIsland = DicoResult["iIsland"]
                NameDico = "%sDicoInitIsland_%5.5i" % (self.IdSharedMem,
                                                       iIsland)
                Dico = NpShared.SharedToDico(NameDico)
                self.DicoInitIndiv[iIsland] = copy.deepcopy(Dico)
                NpShared.DelAll(NameDico)

        if Parallel:
            for ii in range(NCPU):
                workerlist[ii].shutdown()
                workerlist[ii].terminate()
                workerlist[ii].join()

        #MyLogger.setLoud(["pymoresane.main"])
        #MyLogger.setLoud(["ClassImageDeconvMachineMSMF","ClassPSFServer","ClassMultiScaleMachine","GiveModelMachine","ClassModelMachineMSMF"])
        return self.DicoInitIndiv