進程之間是并發還是并行,并發跟并行

 2023-12-25 阅读 25 评论 0

摘要:一、并發和并行 多任務的概念: 進程之間是并發還是并行。 1.簡單地說,就是操作系統可以同時運行多個任務。 并發:指的是任務數多余cpu核數,通過操作系統的各種任務調度算法,實現多個任務"一起"執行(實際上總有一個任務不在執行&#x

一、并發和并行

多任務的概念:

進程之間是并發還是并行。 1.簡單地說,就是操作系統可以同時運行多個任務。

并發:指的是任務數多余cpu核數,通過操作系統的各種任務調度算法,實現多個任務
"一起"執行(實際上總有一個任務不在執行,因為切換任務的速度相當快,看上去一起執行而已)

例子: 就相當于好幾個同學,同時提問一個老師,老師只能一個個回答。


并行:指的是任務數小于等于cpu核數,即任務真的一起執行的

例子: 就相當于好幾個同學,同時提問。多個老師同時給每個同學解答

總結:真正的并行執行多任務只能在多核cpu上實現,但是由于任務數量遠遠多于cpu的核心
數量,所以操作系統也會自動把很多任務輪流調度到每個核心上執行

2.同步異步

并發和并行的概念? 同步:是指線程在訪問某一資源時,獲得了資源的返回結果之后才會執行其他操作(先做
某些事,再做某些事)
異步:與同步相對,是指線程再訪問某一資源時,無論是否取得返回結果,都進行下一步操作;當有了資源返回結果時
系統會通知線程。

二、線程

1、threading模塊介紹
python的Thread模塊是比較底層的模塊,Python的threading模塊是對Thread做了一些包裝的
可以更加方便的被使用

創建線程對象:threading.Thread(target=func)
參數target指定線程執行的任務(函數)

Thread類提供了一下方法:

方法: 說明
run() 用以表示線程活動的方法
start() 啟動線程活動
join() 設置主線程會等待time秒后再往下執行,time默認為子線程結束,多個子線程
之間設置的值會疊加
isAlive() 返回線程是否活動的
getName() 返回線程名
threading.currentThread():返回當前執行的線程
threading.enumerate():返回正在運行的所有線程(list)。正在運行指線程啟動后,結束前,不包括啟動
前和終止后的線程
threading.activeCount():返回正在運行的線程數量

什么叫并行的工作方式、例子一:
import threading

# 創建線程
def func1(name):
  print("線程一{}".format(name))

def func2():
  print("線程二")

# 創建兩個線程
"""
target 傳入的函數名, args 函數的參數,是個元祖
"""
t1 = threading.Thread(target=func1, args=("貓咪",))
t2 = threading.Thread(target=func2)

# 啟動線程1
t1.start()
print(threading.current_thread())
t1.join()

# 啟動線程2
t2.start()
print(threading.current_thread(),threading.enumerate(),threading.active_count())
t2.join()


例子二:
# 創建線程的第二種寫法
import requests
class ThreadRequest(threading.Thread):
# 如果寫初始化函數一定要調用父類的__init__函數
def __init__(self, url):
  self.url = url
  super().__init__()

# 重寫Thread類里面的run方法
def run(self):
  res = requests.get(self.url)
  print("返回狀態碼{}".format(res.status_code))

url = "https://123.sogou.com/"

# 創建五個線程
for i in range(5):
  t = ThreadRequest(url)
  t.start()
  t.join()

轉載于:https://www.cnblogs.com/666666pingzi/p/10964555.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/194874.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息