Pausing a thread using threading class

后端 未结 6 1454
情歌与酒
情歌与酒 2020-12-08 07:41

I have a long process that i\'ve scheduled to run in a thread, because otherwise it will freeze the ui in my wxpython application.

I\'m using

thread         


        
6条回答
  •  青春惊慌失措
    2020-12-08 08:33

    I was having the same issue myself, until I found the answer.

    I did some speed tests as well, the time to set the flag and for action to be taken is pleasantly fast 0.00002 secs on a slow 2 processor Linux box.

    Example thread pause test using set() & clear() events

    By Rich O'Regan

    import threading
    import time
    
    # This function gets called by our thread.. so it basically becomes the thread innit..                    
    def wait_for_event(e):
        while True:
            print '\tTHREAD: This is the thread speaking, we are Waiting for event to start..'
            event_is_set = e.wait()
            print '\tTHREAD:  WHOOOOOO HOOOO WE GOT A SIGNAL  : %s', event_is_set
            e.clear()
    
    # Main code.. 
    e = threading.Event()
    t = threading.Thread(name='your_mum', 
                         target=wait_for_event,
                         args=(e,))
    t.start()
    
    while True:
        print 'MAIN LOOP: still in the main loop..'
        time.sleep(4)
        print 'MAIN LOOP: I just set the flag..'
        e.set()
        print 'MAIN LOOP: now Im gonna do some processing n shi-t'
        time.sleep(4)
        print 'MAIN LOOP:  .. some more procesing im doing   yeahhhh'
        time.sleep(4)
        print 'MAIN LOOP: ok ready, soon we will repeat the loop..'
        time.sleep(2)
    

提交回复
热议问题