[Tutor] While Loop and Threads

James Chapman james at uplinkzero.com
Mon Jul 14 20:03:52 CEST 2014


Multi-threading takes practice!

Are you using an event object to signal the thread should exit? I'm
guessing you're just using a bool which is why it does not work.

See: https://docs.python.org/3.4/library/threading.html#event-objects

I'm very short on time and the moment and therefore can't mock up a working
example. If I have time later/tomorrow and you haven't solved it or no one
else has commented I'll try and put something together.

IMO, move away from GTK until you get threading working as expected, then
add the additional layer. Solve one problem at a time.

James

--
James


On 13 July 2014 12:23, Oğuzhan Öğreden <oguzhanogreden at gmail.com> wrote:

> Hi,
>
> I've been practicing with multithreading and gtk for a while and recently
> have observed something I can't quite grasp.
>
> This is basically a timer with a settings window and a countdown window
> which is produced after setting_window passes necessary arguments to thread.
>
> I have a while loop which counts time, inside the thread, while variable
> "runner" is True, which looks like this:
>
>     def run(self):
>         cycle = ['work', 'break', 'long_break']
>         cycle = cycle[:2]*self.workn+cycle[3]
>         self.runner = True
>         sec_count = timedelta(seconds=1)
>
>         while self.runner == True:
>             for i in cycle:
>                 self.setState(i)
>                 print('Start:', i, datetime.now())
>
>                 while self.end_time > datetime.now():
>                     time.sleep(1)
>                     self.duration -= sec_count
>
>                 self.count[self.state] += 1
>
> And I want countdown to stop when countdown_window receives delete event,
> thus I have a countdown_window.stop() function which is defined as follows:
>
> def stop(self, *args):
>         pom.count[pom.state] -= 1
>         pom.runner = False # refers to the runner of the thread.
>         print(pom.runner) # prints False,
>         Gtk.main_quit()
>
> What I expect to happen is that while loop to break, but it does not.
>
> Any suggestions?
>
> Best,
> Oğuzhan
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20140714/9b86bc27/attachment.html>


More information about the Tutor mailing list