<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>

                [TOC] <br/><br/><br/> # <b style="color:#4F4F4F;">簡介說明</b> 原文鏈接: - [github](https://github.com/python-greenlet/greenlet) ``` 版本:greenlet 作用:底層協程支持工具 ``` <br/> # <b style="color:#4F4F4F;">安裝模塊</b> <br/> # <span style="color:#619BE4">Widows</span> ***** pip install greenlet <br/> # <span style="color:#619BE4">Linux</span> ***** sudo pip3 install greenlet <br/> # <b style="color:#4F4F4F;">greenlet</b> <br/> # <span style="color:#619BE4">*getcurrent()</span> ***** 獲取當前協程唯一標識 <br/> # <span style="color:#619BE4">*settrace()</span> ***** 設置跟蹤函數,用于監聽協程切換 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` import greenlet def test_greenlet_tracing(): def callback(event, args): print(event, 'from', id(args[0]), 'to', id(args[1])) def dummy(): g2.switch() def dummyexception(): raise Exception('excep in coroutine') main = greenlet.getcurrent() g1 = greenlet.greenlet(dummy) g2 = greenlet.greenlet(dummyexception) print('main id %s, gr1 id %s, gr2 id %s' % (id(main), id(g1), id(g2))) oldtrace = greenlet.settrace(callback) try: g1.switch() except Exception: print('Exception') finally: greenlet.settrace(oldtrace) test_greenlet_tracing() ``` <br/> # <span style="color:#619BE4">*gettrace()</span> ***** 返回設置的跟蹤函數 <br/> # <b style="color:#4F4F4F;">greenlet.greenlet</b> <br/> # <span style="color:#619BE4">[new]-greenlet()</span> ***** 創建一個greenlet對象 <br/> # <span style="color:#619BE4">parent</span> ***** 獲取父級協程對象 <br/> # <span style="color:#619BE4">dead</span> ***** 判斷任務是否執行完畢 <br/> # <span style="color:#619BE4">gr_context</span> ***** 上下文 <br/> # <span style="color:#619BE4">gr_frame</span> ***** 最近調用時在此 greenlet 中處于活動狀態的幀 <br/> # <span style="color:#619BE4">run</span> ***** 當greenlet啟動的時候會調用到這個callable,如果我們需要繼承greenlet.greenlet時,需要重寫該方法 <br/> # <span style="color:#619BE4">throw()</span> ***** 切換協程,并立即拋出異常 <br/> # <span style="color:#619BE4">switch()</span> ***** 切換到當前任務執行 <br/> ### 示例內容 <span style="color:red;">1. 舉例說明</span> ``` def test_job_1(): print(1) g2.switch() print(2) g2.switch() def test_job_2(): print(3) g1.switch() print(4) g1, g2 = greenlet.greenlet(test_job_1), greenlet.greenlet(test_job_2) g1.switch() ``` <br/>
                  <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>

                              哎呀哎呀视频在线观看