<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              對于python多層級子線程使用join不能阻塞的疑惑

              0 0 python
              漢有游女,不可求思。
              2018-10-18 11:04:28 提問

              關注 0關注

              收藏 0收藏, 181瀏覽

              def a(i):
                  t = threading.Thread(target=b, args=(i,))
                  t.start()
              def b(i):
                  for j in range(100):
                      print i
              
              
              if __name__ == '__main__':
                  for i in range(100):
                      t = threading.Thread(target=a, args=(i,))
                      t.start()
                      t.join()

              圖片描述

              代碼如上, 加了join,按理說是應該阻塞.但運行結果不是我預期的順序1111...,2222...,3333...
              如果沒有子線程,也就是a函數里直接調用b的話,就是我預期的按順序的結果. 求解惑

              請先 登錄 后評論

              2個回答

              • 豌豆の豆98聲望 2018-10-15 16:02

                我在自己的機器上測試正常,你用命令行跑一次試試。建議把輸出重定向到文件,方便查看。 python thread_test.py > output.txt
                請先 登錄 后評論
              • java_大星星133聲望 2018-10-15 16:02

                我覺得沒什么問題,你仔細看看,這個 t.join() 阻塞的是哪個線程,是 target=a 會等到a函數運行結束。而 a 函數里另起了個線程b。這個 t.join() 并不會阻塞 b 線程。如果你想 a 函數結束時也要 線程b結束,可以: def a(i): t = threading.Thread(target=b, args=(i,)) t.start() t.join()
                請先 登錄 后評論

              注冊新賬號

              懸賞追問
              10
              • 10
              • 20
              • 50
              • 100
              • 200
              • 輸入數值
              發布追問
              极速飞艇好假
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>