Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
304 views
in Technique[技术] by (71.8m points)

python - Pausing a thread using threading class

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

threading.Thread(target = myLongProcess).start()

to start the thread and it works, but I don't know how to pause and resume the thread. I looked in the python docs for the above methods, but wasn't able to find them.

Could anyone suggest how I could do this?

Thank you.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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 'THREAD: This is the thread speaking, we are Waiting for event to start..'
        event_is_set = e.wait()
        print 'THREAD:  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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...