多執行緒基礎

2021-08-05 22:07:56 字數 1104 閱讀 3029

# -*- 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):

print

'' + name

sleep(download_time)

print

'' + 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進行比較,如果等於第乙個引數,那麼就將該值設定為第二個引數,這是由硬體提供的原子操作,所以不會...