[Microbit-Python] another maximum size of program thread

Jeff Young jeff at perfectmotion.co.uk
Thu Jun 30 11:24:45 EDT 2016


from micropython import mem_info <<!

from microbit import *

 

x=[]

for i in range(0,2000):

    print(i)

    mem_info(x) <<! With or without x

    x.append(2)

    sleep(10)

 

From: Locard [mailto:l0c4rd at gmail.com] 
Sent: 30 June 2016 16:23
To: jeff at perfectmotion.co.uk; For Pythonic MicroBit related discussions
Subject: Re: [Microbit-Python] another maximum size of program thread

 

if it helps, "stack" is how much of your allocated stack memory is being
used,
"GC" is the garbage collector, so that's dynamically-allocated memory,

but all those 'h's and 't's?

... what exactly is your program doing?


Locard

On 30/06/2016 16:20, Jeff Young wrote:

That is very cool.

 

stack: 432 out of 1800

GC: total: 9600, used: 5088,.....: 451

stack: 432 out of 1800

GC: total: 9600, used: 5088, free: 4512stack: 432 out of 1800

GC: total: 9600, used: 5088, free: 4512

No. of 1 out of 1800

GC: total: 9600, used: 5088, free: 4512

No. of 1-out of 1800

GC: total: 9600, used: 5088, free: 4512

No. of 1-blocks: 7, 

GC: total: 9600, used: 5088, free: 4512

No. of 1-blocks: 7, 2-GC: total: 9600, used: 5088, free: 4512

No. of 1-blocks: 7, 2-blocks: 1, 9600, used: 5088, free: 4512

No. of 1-blocks: 7, 2-blocks: 1, max blk sz: 5088,
freeThBTL.......h.....htttttt..........htttttttt20000230:

00230: htThBTL.......h.....htttttt..........httttttttttttttttttt00230:
htThBTL.......h.....htttttt..........htttttttttttttttttttt0230:
ht00BTL.......h.....htttttt..........httttttttttttttttttttt....h

00630: ......h....htttttt..........httttttttttttttttttttt....h

00630: ......httttttthttt..........httttttttttttttttttttt....h

00630: ......httttttthttttthttttttttttttttttttttttttttttt....h

(3 lines all free)

 

Just need to figure out what I'm looking at ;-)

 

From: Microbit [mailto:microbit-bounces+jeff=perfectmotion.co.uk at python.org]
On Behalf Of Locard
Sent: 30 June 2016 15:56
To: For Pythonic MicroBit related discussions
Subject: Re: [Microbit-Python] another maximum size of program thread

 

One other thing:
 
> It would be great to be able to see how much memory is being 
> consumed/free during runtime.  Great to be able to see the size of 
> objects etc in memory.
 
 
This you can do. try:
 
 
    from micropython import mem_info
 
    #print memory info
    mem_info()
 
    #print verbose memory info
    mem_info("whatever")
 
 
 
Should give you the info you're after.
 
Locard

 

On 30/06/2016 15:38, Nicholas H.Tollervey wrote:

I believe there is a max file length due to the constraints of the
device (Mark Shannon will be able to confirm this). Perhaps you're
hitting that? Why not modularise your code and import it as required in
main.py..?
 
Just guessing out loud here... YMMV.
 
:-)
 
N.
 
On 30/06/16 15:35, Jeff Young wrote:

Good idea.  I gave it a try...
 
Installed microfs on my PC with a 'pip install microfs'
Flashed the microbit from the mu editor with a blank file. ( installed
runtime)
Uploaded the first test script to the microbit with 'ufs  put main.py'
Hit the restart button.
It worked perfectly with this basic script ( main.py )
 
from microbit import *
while True:
    display.scroll('Hello, World!')
    display.show(Image.HEART)
    sleep(2000)
 
Tried with my problem script getting smaller and smaller...
 
ufs put memory.py
MemoryError: memory allocation failed, allocating 3381 bytes
 
ufs put main.py
MemoryError: memory allocation failed, allocating 3087 bytes
 
ufs put main.py
MemoryError: memory allocation failed, allocating 2756 bytes
 
I even got past the point where the SAME code loads and runs from mu ! i.e
If I take the 2756bytes version above and load it into Mu and flash it
works.
 
Close but no cigar...
 
-----Original Message-----
From: Microbit [mailto:microbit-bounces+jeff=perfectmotion.co.uk at python.org]
On Behalf Of Nicholas H.Tollervey
Sent: 30 June 2016 14:55
To: microbit at python.org
Subject: Re: [Microbit-Python] another maximum size of program thread
 
Jeff,
 
A quick thought. If it's script length that's the problem, you could just
use the file-system. Viz:
 
https://microbit-micropython.readthedocs.io/en/latest/tutorials/storage.html
#mainly-main-py
 
Hope this helps,
 
N.
 
On 30/06/16 14:47, Jeff Young wrote:

Hi All
 
 
 
First time posting here.  Checked the archives and found my exact 
problem outlined in a thread titled 'Maximum Size of Microbit Python 
Program' from Jun '16.
 
I've tried a few things and I'm hitting the 'size of script' memory 
problem as outlined in a post from Nicholas Tollervey.  Runtime memory 
is fine.
 
 
 
The program never starts and I just see;
 
 
 
MemoryError: memory allocation failed, allocating 3688 bytes
 
MicroPython v1.7-9-gbe020eb on 2016-04-18; micro:bit with nRF51822
 
 
 
The thread doesn't really reach any solutions so I was wondering if 
anyone had found a workround ?  I've tried Mu and online editors.  
Same result.  I'm seeing the messages via REPL in Mu
 
 
 
My program is 127 lines working but add in another 8 lines and it 
breaks.  No comments in the code ;-)
 
 
 
As an aside I originally wrote it using python classes and objects but 
found I quickly hit the runtime error limit after about 3 or 4 objects.
Rewrote with simple lists and we're up to 20 objects before hitting 
the runtime limit.  I'm thinking classes/objects consume a lot of memory.
Also lists-of-lists seem quite memory hungry.
 
 
 
It would be great to be able to see how much memory is being 
consumed/free during runtime.  Great to be able to see the size of 
objects etc in memory.
 
 
 
I'm also wondering it there is some way to re-balance the memory 
partitioning between the block of memory that holds the code and the 
runtime memory ? ie take a few kb from the run time partition and add 
it to the code partition ?
 
 
 
Thanks
 
 
 
Jeff
 
 
 
 
 
 
 
_______________________________________________
Microbit mailing list
Microbit at python.org
https://mail.python.org/mailman/listinfo/microbit
 

are you in a meeting @be
 
 
_______________________________________________
Microbit mailing list
Microbit at python.org
https://mail.python.org/mailman/listinfo/microbit
 

 
 







_______________________________________________
Microbit mailing list
Microbit at python.org
https://mail.python.org/mailman/listinfo/microbit

 






_______________________________________________
Microbit mailing list
Microbit at python.org
https://mail.python.org/mailman/listinfo/microbit

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/microbit/attachments/20160630/75377fcc/attachment-0001.html>


More information about the Microbit mailing list