使用线程类暂停线程 [英] Pausing a thread using threading class

查看:60
本文介绍了使用线程类暂停线程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经安排了很长的进程在线程中运行,因为否则它将冻结我的wxpython应用程序中的ui.

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.

我正在使用

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

启动线程,它可以工作,但是我不知道如何暂停和恢复线程.我在python文档中查找了上述方法,但找不到它们.

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?

谢谢.

推荐答案

我自己遇到了同样的问题,直到找到答案为止.

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

我也进行了一些速度测试,在速度较慢的2处理器Linux机器上,设置标志和采取措施的时间非常快,为0.00002秒.

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.

通过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)

这篇关于使用线程类暂停线程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆