<i id='T1pDO'><tr id='T1pDO'><dt id='T1pDO'><q id='T1pDO'><span id='T1pDO'><b id='T1pDO'><form id='T1pDO'><ins id='T1pDO'></ins><ul id='T1pDO'></ul><sub id='T1pDO'></sub></form><legend id='T1pDO'></legend><bdo id='T1pDO'><pre id='T1pDO'><center id='T1pDO'></center></pre></bdo></b><th id='T1pDO'></th></span></q></dt></tr></i><div id='T1pDO'><tfoot id='T1pDO'></tfoot><dl id='T1pDO'><fieldset id='T1pDO'></fieldset></dl></div>

      <bdo id='T1pDO'></bdo><ul id='T1pDO'></ul>
  1. <tfoot id='T1pDO'></tfoot>

      <small id='T1pDO'></small><noframes id='T1pDO'>

      <legend id='T1pDO'><style id='T1pDO'><dir id='T1pDO'><q id='T1pDO'></q></dir></style></legend>

      python 线程的暂停, 恢复, 退出详解及实例

      时间:2023-12-15
      <tfoot id='npzhR'></tfoot>

          <i id='npzhR'><tr id='npzhR'><dt id='npzhR'><q id='npzhR'><span id='npzhR'><b id='npzhR'><form id='npzhR'><ins id='npzhR'></ins><ul id='npzhR'></ul><sub id='npzhR'></sub></form><legend id='npzhR'></legend><bdo id='npzhR'><pre id='npzhR'><center id='npzhR'></center></pre></bdo></b><th id='npzhR'></th></span></q></dt></tr></i><div id='npzhR'><tfoot id='npzhR'></tfoot><dl id='npzhR'><fieldset id='npzhR'></fieldset></dl></div>
          1. <small id='npzhR'></small><noframes id='npzhR'>

                <tbody id='npzhR'></tbody>
              <legend id='npzhR'><style id='npzhR'><dir id='npzhR'><q id='npzhR'></q></dir></style></legend>
                <bdo id='npzhR'></bdo><ul id='npzhR'></ul>

                Python 线程的暂停、恢复、退出详解及实例

                线程的暂停

                在 Python 中,线程的暂停可以通过 sleep 函数实现。sleep 函数的作用是让线程进入休眠状态,等待一定的时间之后再恢复执行。

                示例一

                下面是一个简单的例子,演示了如何使用 sleep 函数实现线程的暂停。

                import threading
                import time
                
                def task():
                    print('Start task...')
                    time.sleep(5)
                    print('Task finished.')
                
                t = threading.Thread(target=task)
                t.start()
                
                print('Main thread...')
                time.sleep(2)
                t.join()
                

                在上面的例子中,我们创建了一个名为 task 的函数,里面包含了一个 print 语句和一个 sleep 函数。然后,我们使用 threading 模块创建了一个线程,并让它执行 task 函数。

                在主线程中,我们也使用了 sleep 函数,让主线程休眠 2 秒。最后,我们调用了线程的 join 方法,等待线程执行并结束。运行上面的代码,可以看到如下输出结果:

                Main thread...
                Start task...
                Task finished.
                

                可以看到,线程开始执行后,会等待 5 秒钟,然后才会结束。主线程也在执行过程中暂停了 2 秒钟,最后等待线程结束。

                线程的恢复

                在 Python 中,线程的恢复是自动完成的。一旦线程进入了休眠状态,等待时间结束之后,线程会自动恢复执行。

                示例二

                下面是一个稍微复杂一些的例子,演示了如何在多个线程之间共享数据,并使用事件对象控制线程的执行流程。

                import threading
                import time
                
                event = threading.Event()
                count = 0
                
                def worker():
                    global count
                    print('Worker start...')
                    while True:
                        if event.is_set():
                            count += 1
                            print('Worker count: %d' % count)
                        else:
                            print('Worker paused.')
                        time.sleep(1)
                
                t = threading.Thread(target=worker)
                t.start()
                
                while True:
                    cmd = input('Enter command:')
                    if cmd == 'q':
                        event.set()
                        t.join()
                        break
                    elif cmd == 'p':
                        event.clear()
                        print('Paused.')
                    elif cmd == 'r':
                        event.set()
                        print('Resumed.')
                    else:
                        print('Unknown command.')
                

                在上面的例子中,我们创建了一个名为 worker 的函数,表示工作线程。在工作线程中,我们使用了一个 while 循环,这个循环在等待一个事件对象的设置,如果事件对象被设置,那么就会累加一个计数器变量,然后输出计数器的值。

                在主线程中,我们用一个 while 循环读取用户的输入。如果用户输入 'q',那么就会设置事件对象并等待工作线程结束。如果用户输入 'p',那么就会清除事件对象,让工作线程暂停执行。如果用户输入 'r',那么就会设置事件对象,让工作线程继续执行。运行上面的代码,可以看到如下输出结果:

                Worker start...
                Enter command:r
                Resumed.
                Worker count: 1
                Worker count: 2
                Enter command:p
                Paused.
                Worker paused.
                Enter command:r
                Resumed.
                Worker count: 3
                Worker count: 4
                Enter command:q
                

                可以看到,工作线程开始执行后会输出一些内容。在主线程中,我们输入 'r' 使工作线程恢复执行,然后输出了两个计数器的值。接着,我们输入 'p' 使工作线程暂停执行,然后输出了一条提示信息。最后,我们输入 'r' 使工作线程恢复执行,然后输出了另外两个计数器的值。最后,我们输入 'q' 退出程序。

                上一篇:浅谈Python中的全局锁(GIL)问题 下一篇:利用Python发送 10 万个 http 请求

                相关文章

                <tfoot id='9Ssfa'></tfoot>
                • <bdo id='9Ssfa'></bdo><ul id='9Ssfa'></ul>
                  <i id='9Ssfa'><tr id='9Ssfa'><dt id='9Ssfa'><q id='9Ssfa'><span id='9Ssfa'><b id='9Ssfa'><form id='9Ssfa'><ins id='9Ssfa'></ins><ul id='9Ssfa'></ul><sub id='9Ssfa'></sub></form><legend id='9Ssfa'></legend><bdo id='9Ssfa'><pre id='9Ssfa'><center id='9Ssfa'></center></pre></bdo></b><th id='9Ssfa'></th></span></q></dt></tr></i><div id='9Ssfa'><tfoot id='9Ssfa'></tfoot><dl id='9Ssfa'><fieldset id='9Ssfa'></fieldset></dl></div>

                  1. <small id='9Ssfa'></small><noframes id='9Ssfa'>

                  2. <legend id='9Ssfa'><style id='9Ssfa'><dir id='9Ssfa'><q id='9Ssfa'></q></dir></style></legend>