<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 定時器(Timer) 定時器,指定n秒后執行某操作 ~~~ from threading import Timer def hello(): print("hello, world") t = Timer(1, hello) t.start() # after 1 seconds, "hello, world" will be printed ~~~ ## 條件(Condition) 使用Condition對象可以在某些事件觸發或者達到特定的條件后才處理數據 * acquire()/release():獲得/釋放 Lock * wait([timeout]): 線程掛起,直到收到一個notify通知或者超時才會被喚醒繼續運行。 wait()必須在已獲得Lock前提下才能調用,否則會觸發RuntimeError。 調用wait()會釋放Lock * notify(n=1): 通知其他線程(n是個數),那些掛起的線程接到這個通知之后會開始運行, notify()必須在已獲得Lock前提下才能調用,否則會觸發RuntimeError。 notify()不會主動釋放Lock。 * notifyAll(): 通知所有線程(用得少) * 應用舉例: 通過手動輸入的方式控制并發線程的數量 ``` import threading def run(n): con.acquire() # 條件的acquire con.wait() # 等待 print("run the thread: %s" % n) con.release() if __name__ == '__main__': con = threading.Condition() # 實例化了一個條件 for i in range(10): # 10個線程 t = threading.Thread(target=run, args=(i,)) t.start() while True: inp = input('>>>') if inp == 'q':break con.acquire() con.notify(int(inp)) con.release() print('****') ``` ## 線程隊列(queue) threading 線程模塊中沒有進程模塊那樣自帶的Queue隊列方法,但是可以從python自帶的模塊中導入. 有三種不同的用法隊列 ### 先進先出隊列 **class queue.Queue(maxsize=0) ** ~~~ import queue q=queue.Queue() q.put('first') q.put('second') q.put('third') print(q.get()) print(q.get()) print(q.get()) #結果(先進先出): first second third ~~~ ### 先進后出隊列(堆棧) **class queue.LifoQueue(maxsize=0)** ~~~ import queue q=queue.LifoQueue() q.put('first') q.put('second') q.put('third') print(q.get()) print(q.get()) print(q.get()) #結果(后進先出): third second first ~~~ ### 優先級隊列 **class queue.PriorityQueue(maxsize=0) #:存儲數據時可設置優先級的隊列** ~~~ import queue q=queue.PriorityQueue() #put進入一個元組,元組的第一個元素是優先級,數字越小優先級越高 q.put((20,'a')) q.put((10,'b')) q.put((30,'c')) print(q.get()) print(q.get()) print(q.get()) #結果(數字越小優先級越高,優先級高的優先出隊): (10, 'b') (20, 'a') (30, 'c') ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看