Hi Alan, thanks for that!
I realise I provided quite a lot of unnecessary info, but I've been bitten a few times with the not providing enough so thought it best. Thanks again for confirming my thoughts, that's very helpful. Nate On 02/08/2019 01:27, Alan Gauld via Tutor wrote: > On 01/08/2019 23:10, nathan tech wrote: > >> import speedtest > This is not a standard library module so I have no idea > what it does so obviously there could be magic afoot of > which I am unaware. But assuming it behaves like most > Python code... > >> def do-test(): >> test=speedtest.Speedtest() >> test.download() >> test.upload() >> return [test.download_speed, test.upload_speed] > test is garbage collected sat this point since it > goes out of scope and the returned values are passed > to the caller. Note that the returned values are not > part of the test object. The test attributes refer to > those values but it is the values themselves that > are returned. > >> Now. If I was to put this into a GUI application, I was thinking of >> having it something like this: > The fact it is a GUI is completely irrelevant. > There is nothing special about how a GUI calls a function. > >> user clicks button, >> button calls function which: >> >> 1. Shows the screen which updates with test status. >> 2, does: results=do_test() >> 3. Updates the screen with the contents of results. > The fact that the GUI calls this function is irrelevant. > A function gets called and performs some actions. > One of which is to call do_test(). It would be exactly the same if you > did this: > > for n in range(3): > result = do_test() > print(result) > > You still call the function repeatedly. > >> If the user clicks the button, say, 3 times, will I have three separate >> speedtest objects? > You will have created 3 separate speedtest instances and each > will have been garbage collected when do_test() terminated. > So you will have no speedtest instances left hanging around. > >> or will the python garbage collector clean them up for me so I only have >> one, which gets cleaned when do_test returns. > You only ever have one at a time during the execution of do_test(). > You have a total of 3 during your programs lifetime. (or however many > times you click the button!) > > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor