我有一个很长的进程,我计划在一个线程中运行,因为否则它会冻结我的 wxpython 应用程序中的 UI。
我在用着:
threading.Thread(target=myLongProcess).start()
启动线程并且它可以工作,但我不知道如何暂停和恢复线程。我在Python文档中查找了上述方法,但没有找到它们。
谁能建议我如何做到这一点?
我也做了一些速度测试,在慢速 2 处理器 Linux 机器上,设置标志和采取操作的时间快得令人愉快,为 0.00002 秒。
使用线程暂停测试的示例set()
and clear()
events:
import threading
import time
# This function gets called by our thread.. so it basically becomes the thread init...
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)
# or for Python >= 3.6
# print(f'\tTHREAD: WHOOOOOO HOOOO WE GOT A SIGNAL : {event_is_set}')
e.clear()
# Main code
e = threading.Event()
t = threading.Thread(name='pausable_thread',
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')
time.sleep(4)
print('MAIN LOOP: .. some more processing im doing yeahhhh')
time.sleep(4)
print('MAIN LOOP: ok ready, soon we will repeat the loop..')
time.sleep(2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)