一,,是一個進程中的多個任務的共同執(zhí)行(異步,,比如數(shù)據(jù)的分析等),但是在數(shù)據(jù)處理上要同步,,否則會帶來臟數(shù)據(jù),! 二,time.sleep()是同步的 三,,主線程聲明了幾個子線程,用time.sleep()來模擬這個線程耗費的時間: (1)它們是同時運行的,如果主線程結束了,子線程還沒結束,子線程會一直運行到結束才完畢; (2)子線程使用了join()之后,會在這個子線程結束之后,才會運行下一個線程(無論子主),,注意,要區(qū)分是每個線程start后面有個join還是所有線程start完了之后才join的,若是每個線程start()后面街上他的join(),那么就是這個線程完了才執(zhí)行下一個子線程,要是所有的線程start()完了之后才依次街上join(),那么就是線程同時運行,完了再進行主線程 (3)使用了setDaemon(True)[講子線程設定為守護線程]之后,只要主線程結束了,那么子線程也將不再運行,也結束了 四,,線程鎖,在多線程當中為了防止臟數(shù)據(jù)(多個線程操作一個數(shù)據(jù)產(chǎn)生不良的后果),,加了線程鎖,,一個是threading.Lock(),一個是threading.Semaphore();前者是規(guī)定一個數(shù)據(jù)片段僅僅一個線程訪問,后者是可以規(guī)定一個線程片段是可以多個線程去訪問 |
|