# -*- coding: utf-8 -*-import requests
import threading
import sys
from time import sleep
reload(sys)
sys.setdefaultencoding("utf-8")
# 單執行緒
: 順序執行
, 如果第乙個人沒有執行完
, 第二個不能開始
# 體驗
: 執行**需要等待
,有可能卡死
# ctrl+d
複製滑鼠所在行
def
download_movie(name, download_time):
'' + name
sleep(download_time)
'' + name
# 多執行緒的特點
:無順序 如果出錯不好排查 如果功能複雜
,不好維護 效率高
# 每開乙個執行緒
,都會消耗一定的
"系統資源(記憶體
,cpu)",
開多執行緒要適當
# 開啟乙個新執行緒
# 引數一
:target
讓執行緒執行那個函式?#
引數二:args
向該函式傳遞若干引數
,型別是元組
thread1 = threading.thread(target=download_movie,
args=("
變形金剛一",
1.05))
thread2 = threading.thread(target=download_movie,
args=("
變形金剛二",
1.1))
thread3 = threading.thread(target=download_movie,
args=("
變形金剛三",
1))thread3.start()
thread2.start()
thread1.start()
多執行緒基礎
對於多執行緒程式設計,很多人概念不清,寫 的時候要麼是處處加鎖,影響效能不說,還容易莫名其妙的死鎖,還有人對多執行緒敬而遠之。所以學習多執行緒程式設計最重要的不是學習 api,而是理解什麼才是多執行緒安全的 從例子說起 include include long global1 0 volatile ...
多執行緒基礎
什麼是併發 同時執行多個程式,或者乙個程式的多段 在巨集觀上,存在併發的,但是在微觀上,其實不存在併發 時間片 在計算機中,使用時間片來實現併發的運算 在計算甲中,在最小的單位時間上 只能執行乙個運算 用來控制多個程式之間的輪轉,使得程式交替的執行 達到併發的目的 多個cpu 多個核心 才能實現真正...
多執行緒基礎
多執行緒的最底層依賴於unsafe的compareandswap cas 和locksupport的park和unpark操作。cas需要傳遞兩個引數 expect和update。先跟第乙個引數expect進行比較,如果等於第乙個引數,那麼就將該值設定為第二個引數,這是由硬體提供的原子操作,所以不會...