News for hackers. Stuff that matters.

Ask HN: Is this a Python bug?

The run method below never executes in Python 3.5:

from threading import Thread

import time

class MyThread(Thread):

    def __init__(self):

        Thread.__init__(self)

    def run(self):
        while True:
            print("Forever")
            time.sleep(10)

        return

        yield from None
if __name__ == '__main__':

    mt = MyThread()

    mt.start()

    mt.join()
( 4 comments | 3 points | on HN )
Re:Ask HN: Is this a Python bug? by melor on Tuesday April 19, 2016 @09:01AM (#11526602)
Re:Ask HN: Is this a Python bug? by ninadmhatre on Tuesday April 19, 2016 @09:05AM (#11526630)
I dont have access to python 3.5 but i tried above code with some modifications and it worked!

1. `while True` has no break condition and that intentional but `mt.join()` basically waits till all threads are completed? are you looking thread that keeps on running? i suggest look at daemon thread? if yes, check this https://pymotw.com/2/threading/#daemon-vs-non-daemon-threads

2. `return` & `yield from None` are not required! I had commented those lines, also 'from' is a reserved keyword

Re:Ask HN: Is this a Python bug? by wslh on Tuesday April 19, 2016 @09:08AM (#11526649)
Re:Ask HN: Is this a Python bug? by stray on Tuesday April 19, 2016 @09:57AM (#11526942)
Shouldn't the yield be inside the while loop?