<tfoot id='FD2F3'></tfoot>
  • <legend id='FD2F3'><style id='FD2F3'><dir id='FD2F3'><q id='FD2F3'></q></dir></style></legend>

        <bdo id='FD2F3'></bdo><ul id='FD2F3'></ul>

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

        <i id='FD2F3'><tr id='FD2F3'><dt id='FD2F3'><q id='FD2F3'><span id='FD2F3'><b id='FD2F3'><form id='FD2F3'><ins id='FD2F3'></ins><ul id='FD2F3'></ul><sub id='FD2F3'></sub></form><legend id='FD2F3'></legend><bdo id='FD2F3'><pre id='FD2F3'><center id='FD2F3'></center></pre></bdo></b><th id='FD2F3'></th></span></q></dt></tr></i><div id='FD2F3'><tfoot id='FD2F3'></tfoot><dl id='FD2F3'><fieldset id='FD2F3'></fieldset></dl></div>
      1. python sleep和wait对比总结

        时间:2023-12-16
          <tbody id='VwYCa'></tbody>

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

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

              <bdo id='VwYCa'></bdo><ul id='VwYCa'></ul>

                • Python中的sleep和wait对比总结

                  在Python中,sleep()和wait()是两种常用的线程同步技术。虽然它们都可以用来控制线程之间的执行顺序,但它们的实现方式和适用场景有所不同。以下是它们的详细对比:

                  sleep

                  sleep()是一个让线程进入休眠状态的函数,它可以暂停指定时间的线程,让其他线程有机会得到执行。在指定时间内,当前线程会释放GIL锁,其他线程可以得到执行,直到休眠时间到达后,当前线程被重新唤醒。

                  sleep()的语法如下:

                  import time
                  
                  time.sleep(sec)
                  

                  其中sec参数是指休眠时间,以秒为单位。

                  以下是一个示例,展示如何使用sleep()函数控制子线程和主线程的执行顺序。

                  import threading
                  import time
                  
                  def worker():
                      print("Worker started")
                      time.sleep(2) # 子线程休眠2秒
                      print("Worker finished")
                  
                  print("Main started")
                  t = threading.Thread(target=worker) # 创建子线程
                  t.start() # 启动子线程
                  time.sleep(1) # 主线程休眠1秒
                  print("Main finished")
                  

                  在上面的示例中,主线程先启动子线程,然后休眠1秒钟,最后才完成。因为主线程休眠了1秒钟,所以子线程有足够的时间执行完毕。如果不加休眠,则主线程会立即结束,子线程没有机会执行完毕。

                  wait

                  wait()是一种同步机制,它允许一个线程等待并阻塞它,直到收到另一个线程发送的通知信号。wait()通常与特定的,只能由一个线程写入的共享资源相关。当另一个线程修改了该共享资源后,可以调用notify()notifyAll()方法通知所有等待的线程继续执行。

                  wait()方法的语法如下:

                  condition.wait(timeout=None)
                  

                  其中,condition是一个条件对象,timeout是一个可选的参数,表示在等待操作时的超时时间。

                  以下是一个简单的示例,展示如何使用wait()notify()方法同步多个线程:

                  import threading
                  
                  class Example:
                      def __init__(self):
                          self.condition = threading.Condition()
                          self.counter = 0
                  
                      def sub(self):
                          with self.condition:
                              while self.counter <= 0:
                                  self.condition.wait() # 等待并阻塞
                              self.counter -= 1
                              print("Sub: ", self.counter)
                  
                      def add(self):
                          with self.condition:
                              self.counter += 1
                              print("Add: ", self.counter)
                              self.condition.notify() # 通知等待中的线程继续执行
                  
                  
                  e = Example()
                  t1 = threading.Thread(target=e.sub) # 创建子线程1
                  t2 = threading.Thread(target=e.sub) # 创建子线程2
                  t3 = threading.Thread(target=e.add) # 创建子线程3
                  
                  t1.start() # 启动子线程1
                  t2.start() # 启动子线程2
                  t3.start() # 启动子线程3
                  
                  # 等待所有子线程执行完毕
                  t1.join()
                  t2.join()
                  t3.join()
                  

                  在上面的示例中,有一个共享变量counter,当counter的值大于0时,sub()方法可以执行减法操作,而counter的值被add()方法加1。当counter为0时,sub()方法调用wait()方法将自己挂起,并等待add()方法通知它继续执行。

                  对比总结

                  • sleep()是一种让线程进入休眠状态,暂停指定时间的线程,让其他线程有机会得到执行。它适用于控制线程的执行时间。
                  • wait()是一种线程同步机制,允许一个线程等待并阻塞,直到收到另一个线程发送的通知信号。它适用于控制共享变量的修改。
                  上一篇:详解python之多进程和进程池(Processing库) 下一篇:Python实现PDF文字识别提取并写入CSV文件

                  相关文章

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

                  <tfoot id='nWXoh'></tfoot><legend id='nWXoh'><style id='nWXoh'><dir id='nWXoh'><q id='nWXoh'></q></dir></style></legend>

                    1. <small id='nWXoh'></small><noframes id='nWXoh'>

                        <bdo id='nWXoh'></bdo><ul id='nWXoh'></ul>