亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python線程安全及多進程多線程實現(xiàn)方法詳解

 更新時間:2019年09月27日 11:25:05   作者:DRQ丶  
這篇文章主要介紹了python線程安全及多進程多線程實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下

進程和線程的區(qū)別

  • 進程是對運行時程序的封裝,是系統(tǒng)資源調(diào)度和分配的基本單位
  • 線程是進程的子任務(wù),cpu調(diào)度和分配的基本單位,實現(xiàn)進程內(nèi)并發(fā)。
  • 一個進程可以包含多個線程,線程依賴進程存在,并共享進程內(nèi)存

什么是線程安全

一個線程的修改被另一個線程的修改覆蓋掉。

python中哪些操作是線程安全的

  • 一個操作可以在多線程環(huán)境中使用,并且獲得正確的結(jié)果。
  • 線程安全的操作線程是順序執(zhí)行的而不是并發(fā)執(zhí)行的。
  • 一般涉及到寫操作需要考慮如何讓多個線程安全訪問數(shù)據(jù)。

線程同步的方式

  • 互斥量(鎖): 通過互斥機制防止多個線程同時訪問公共資源。
  • 信號量(Semphare): 控制同一時刻多個線程訪問同一個資源的線程數(shù)。 ps:python的threading 文檔
  • 事件(信號): 通過通知的方式保持多個線程的同步。

進程間的通信方式 (IPC:Inter-Process Communication 進程間傳遞信號或者數(shù)據(jù))

  • 管道/匿名管道/有名管道(pipe)
  • 信號(Signal):比如用戶使用ctrl+c產(chǎn)生SIGINT程序終止信號
  • 消息隊列(Message)
  • 共享內(nèi)存(share memory)
  • 進程間的信號量(Semaphore)
  • 套接字(socket):最常用的方式,我們的web應(yīng)用就是這種方式

多線程的例子

# python實現(xiàn)多線程
import threading

lock = threading.Lock()

n = [0]

def foo():
  with lock:  # 加鎖
    n[0] = n[0] + 1
    n[0] = n[0] + 1


threads = [] # 用來儲存所有線程
for i in range(5000):
  t = threading.Thread(target=foo)  # 傳入foo函數(shù)
  threads.append(t)
for t in threads:
  t.start()

print(n)

多進程的例子

python有GIL,可以用多進程實現(xiàn)cpu密集程序

  • multiprocessing 多進程模塊
  • multiprocessing.Process 類實現(xiàn)多進程
  • 一般在cpu密集的程序里面使用多進程,避免GIL的影響
# 多進程

import multiprocessing

def fib(n):
  if n<= 1:
    return 1
  return fib(n-1) + fib(n-2)



if __name__ == '__main__':
  jobs = []
  for i in range(10,20):
    p = multiprocessing.Process(target=fib, args=(i,))
    jobs.append(p)
    p.start()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python單元測試之pytest的使用

    python單元測試之pytest的使用

    Pytest是Python的一種單元測試框架,與 Python 自帶的 Unittest 測試框架類似,但是比 Unittest 框架使用起來更簡潔,效率更高,今天給大家詳細介紹一下pytest的使用,需要的朋友可以參考下
    2021-06-06
  • Python實現(xiàn)解壓當天創(chuàng)建的ZIP文件到指定文件夾中

    Python實現(xiàn)解壓當天創(chuàng)建的ZIP文件到指定文件夾中

    這篇文章主要為大家詳細介紹了Python如何實現(xiàn)解壓當天創(chuàng)建的ZIP文件到指定文件夾中,文中的示例代碼講解詳細,需要的小伙伴可以參考下
    2024-03-03
  • pytorch固定BN層參數(shù)的操作

    pytorch固定BN層參數(shù)的操作

    這篇文章主要介紹了pytorch固定BN層參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python3 socket同步通信簡單示例

    Python3 socket同步通信簡單示例

    這篇文章主要介紹了Python3 socket同步通信功能,結(jié)合簡單實例形式分析了Python socket同步通信客戶端與服務(wù)器端實現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • Python中byte字符串轉(zhuǎn)string的實現(xiàn)

    Python中byte字符串轉(zhuǎn)string的實現(xiàn)

    本文主要介紹了Python中byte字符串轉(zhuǎn)string的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-07-07
  • pandas 如何保存數(shù)據(jù)到excel,csv

    pandas 如何保存數(shù)據(jù)到excel,csv

    這篇文章主要介紹了pandas 如何保存數(shù)據(jù)到excel,csv的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 基于python+selenium自動健康打卡的實現(xiàn)代碼

    基于python+selenium自動健康打卡的實現(xiàn)代碼

    這篇文章主要介紹了基于python+selenium自動健康打卡,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-01-01
  • 使用Python在Word表格中插入或刪除行或列的幾種方法

    使用Python在Word表格中插入或刪除行或列的幾種方法

    Word文檔中的表格可以用于組織和展示數(shù)據(jù),在實際應(yīng)用過程中,有時為了調(diào)整表格的結(jié)構(gòu)或適應(yīng)不同的數(shù)據(jù)展示需求,我們可能會需要插入、刪除行或列,本文提供了幾種使用Python在Word表格中插入或刪除行、列的方法供參考
    2024-07-07
  • django 認證類配置實現(xiàn)

    django 認證類配置實現(xiàn)

    本文主要介紹了django 認證類配置實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python實現(xiàn)抓取頁面上鏈接的簡單爬蟲分享

    Python實現(xiàn)抓取頁面上鏈接的簡單爬蟲分享

    這篇文章主要介紹了Python實現(xiàn)抓取頁面上鏈接的簡單爬蟲分享,本文使用了一個開源模塊requests實現(xiàn)需求,需要的朋友可以參考下
    2015-01-01

最新評論