Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Loading Packages in a loop

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84448] Re: Loading Packages in a loop
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Tue, 25 Dec 2007 06:24:15 -0500 (EST)
  • References: <fknvm0$6cq$1@smc.vnet.net>

Hi,

and change your loop to
<< CleanSlate.m;


Do[
    $HistoryLength = 0; (* some other things to save memory
*)
    Unprotect[In, Out]; (* some other things to save memory
*)
    Clear[In, Out];     (* some other things to save memory
*)
    Protect[In, Out];   (* some other things to save memory
*)
    Get["myPackage`"];(* reload my package *)
    PackageFunktion[];           (* call my function  *)
    CleanSlateExcept["Global`"], (* clean my context  *)
    {i,n}
    ];

does not help ?

Or
<< CleanSlate.m;
Needs["myPackage`"];

Do[
    $HistoryLength = 0; (* some other things to save memory
*)
    Unprotect[In, Out]; (* some other things to save memory
*)
    Clear[In, Out];     (* some other things to save memory
*)
    Protect[In, Out];   (* some other things to save memory
*)
    DeclarePackage[""myPackage`","PackageFunktion"];
    PackageFunktion[];           (* call my function  *)
    CleanSlateExcept["Global`"], (* clean my context  *)
             (* reload my package *)
    {i,n}
    ];

??

Regards
   Jens

Matthias Gottschalk wrote:
> I do heavy calculations repeatedly in a loop using
> Mathematica 6.0.1.0
> For this I use a package which I load.
> For each pass in the loop the Kernel memory requirements
> increases my 50 to 100 MB. Because of this the
> calculations fail after several passes through the loop.
> I came across the CleanSlate package which in principal
> does what I want. It works and frees the memory.
> 
> But I can use CleanSlate only in linear code. In any block
> (loop or blocks with labels and gotos) my calculations
> fail because I can not reload the package successfully.
> The call to CleanSlateExcept[Global`] naturally kills the
> package but I can not reload the package from inside the 
> loop. The call to Needs[mypackage`] runs but my functions 
> are not accessible.
> 
> My code looks like this:
> 
> << CleanSlate.m;
> Needs["myPackage`"];
> 
> Do[
>    $HistoryLength = 0; (* some other things to save memory 
> *)
>    Unprotect[In, Out]; (* some other things to save memory 
> *)
>    Clear[In, Out];     (* some other things to save memory 
> *)
>    Protect[In, Out];   (* some other things to save memory 
> *)
>    PackageFunktion[];           (* call my function  *)
>    CleanSlateExcept["Global`"]; (* clean my context  *)
>    Needs["myPackage`"],         (* reload my package *)
>    {i,n}
>    ];
> 
> The first run through the loops works, the second fails in
> the respect that the PackageFunktion[] is nor more found 
> by the code.
> 
> I assume that this is some Context problem.
> 
> An other version of my code:
> 
> << CleanSlate.m;
> 
> Do[
> 
>    Needs["myPackage`"]; (* load my package inside the loop 
> *)
> 
>    $HistoryLength = 0;
>    Unprotect[In, Out];
>    Clear[In, Out];
>    Protect[In, Out];
>    PackageFunktion[];
>    CleanSlateExcept["Global`"],
>    {i,n}
>    ];
> 
> in which I call the package from within the loop produces
> the following error message and no function can be called:
> 
> PackageFunktion::shdw: "Symbol PackageFunktion appears in
> multiple contexts {myPackage`,Global`} definitions in
> context myPackage` may shadow or be shadowed by other
> definitions."
> 
> Has somebody some an idea how I can call a package from 
> within a loop?
> Can I avoid the "memory leak" of the Kernel by other 
> means?
> 
> Matthias
> 
> 
> 
> 


  • Prev by Date: Re: Re: how fill PolarPlot?
  • Next by Date: Can this problem be solved in Mathematica
  • Previous by thread: Loading Packages in a loop
  • Next by thread: Re: Re: Loading Packages in a loop