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

深入理解python多線程編程

 更新時間:2021年04月18日 10:44:58   作者:星星有淚~  
進程是資源分配的最小單位,他是操作系統(tǒng)進行資源分配和調(diào)度運行的基本單位。通俗理解:一個正在運行的一個程序就是一個進程,本文重點給大家介紹python多線程編程的相關知識,感興趣的朋友一起看看吧

進程

進程的概念:
進程是資源分配的最小單位,他是操作系統(tǒng)進行資源分配和調(diào)度運行的基本單位。通俗理解:一個正在運行的一個程序就是一個進程。例如:正在運行的qq、wechat等,它們都是一個進程。
進程的創(chuàng)建步驟
1.導入進程包
 import multiprocessing
2.通過進程類創(chuàng)建進程對象
 進程對象 = multiprocessing.Process()
3.啟動進程執(zhí)行任務
 進程對象.start()

import multiprocessing
import time

def sing():
    for i in range(3):
        print("唱歌。。。")
        time.sleep(0.5)
def dance():
    for i in range(3):
        print("跳舞。。。")
        time.sleep(0.5)
if __name__ == '__main__':
    time1 = time.time()
    s1 = multiprocessing.Process(target=sing)
    d1 = multiprocessing.Process(target=dance)
    s1.start()
    d1.start()
    s1.join() #這個方法可以等待子進程結束后再繼續(xù)往下運行,通常用于進程間的同步
    d1.join()
    print(time.time()-time1)

帶有參數(shù)的進程

args元組,kwargs字典

import multiprocessing
import time

def sing(name, num):
    for i in range(num):
        print("%s在唱歌。。。"%name)
        time.sleep(0.5)
def dance(num):
    for i in range(num):
        print("跳舞。。。")
        time.sleep(0.5)
if __name__ == '__main__':
    # 以元組形式傳參
    s1 = multiprocessing.Process(target=sing, args=('小明', 3))
    # 以字典形式傳參
    d1 = multiprocessing.Process(target=dance, kwargs={"num": 5, })
    s1.start()
    d1.start()

進程的注意點

主進程會等待所有的子進程執(zhí)行結束在結束

設置守護主進程

主進程結束后不會再繼續(xù)執(zhí)行子進程中剩余的工作
work_process = multiprocessing.Process(target=work, daemon=True)

線程

線程的介紹

實現(xiàn)多任務的另一種形式
線程是程序執(zhí)行的最小單位
同屬一個進程的多個線程共享進程所擁有的全部資源

線程的創(chuàng)建步驟
導入線程包
 import threading
通過線程類創(chuàng)建進程對象
 線程對象 = threading.Thread()
啟動線程執(zhí)行任務
 線程對象.start()

優(yōu)缺點對比

1.進程優(yōu)缺點:
 優(yōu)點:可以用多核,可以并行
 缺點:資源開銷大
2.線程優(yōu)缺點:
 優(yōu)點:資源開銷小
 缺點:不可用多核,依附于進程一個進程一個核

案例-多進程實現(xiàn)視頻文件夾多任務拷貝器

需求分析:
目標文件夾是否存在,如果不存在就創(chuàng)建,存在則不創(chuàng)建
遍歷源文件夾中所有文件,并拷貝到目標文件夾
采用進程實現(xiàn)多任務,并完成拷貝
實現(xiàn)步驟
定義源文件夾所在的路徑,目標文件夾所在路徑
創(chuàng)建目標文件夾
通過os.listdir獲取源目錄中的文件列表
遍歷每個文件,定義一個函數(shù),專門實現(xiàn)文件拷貝
采用進程實現(xiàn)多任務,完成高并發(fā)拷貝

import os
import multiprocessing
def copy_file(file_name, source_dir, dest_dir):
    # 1 拼接源文件路徑和目標文件路徑
    source_path = source_dir + '\\' + file_name
    dest_path = dest_dir + '\\' + file_name
    # 2 打開源文件和目標文件
    with open(source_path, 'rb') as source_file:
        with open(dest_path, 'wb') as dest_file:
            # 3 循環(huán)讀取源文件到目標路徑
            while True:
                data = source_file.read(1024)
                if data:
                    dest_file.write(data)
                else:
                    break
if __name__ == '__main__':
    # 1 定義源文件夾和目標文件夾
    source_dir = r'E:\TCT\TIFF_tran\pos_1'
    dest_dir= r'F:\目標文件夾'

    # 2.創(chuàng)建目標文件夾
    try:
        os.mkdir(dest_dir)
    except:
        print("目標文件夾已經(jīng)存在")
    # 3.讀取源文件夾的文件列表
    file_list = os.listdir(source_dir)
    # 4.遍歷文件列表實現(xiàn)拷貝
    for file_name in file_list:
        # copy_file(file_name, source_dir, dest_dir)
        # 5.使用多進程實現(xiàn)多任務拷貝
        sub_process = multiprocessing.Process(target=copy_file, args=(file_name, source_dir, dest_dir))
        sub_process.start()
#線程
import os
import threading
def copy_file(file_name, source_dir, dest_dir):
    # 1 拼接源文件路徑和目標文件路徑
    source_path = source_dir + '\\' + file_name
    dest_path = dest_dir + '\\' + file_name
    # 2 打開源文件和目標文件
    with open(source_path, 'rb') as source_file:
        with open(dest_path, 'wb') as dest_file:
            # 3 循環(huán)讀取源文件到目標路徑
            while True:
                data = source_file.read(1024)
                if data:
                    dest_file.write(data)
                else:
                    break
if __name__ == '__main__':
    # 1 定義源文件夾和目標文件夾
    source_dir = r'F:\迅雷下載\視頻-智能機器人從0到1系統(tǒng)入門課程\視頻'
    dest_dir= r'F:\目標文件夾'

    # 2.創(chuàng)建目標文件夾
    try:
        os.mkdir(dest_dir)
    except:
        print("目標文件夾已經(jīng)存在")
    # 3.讀取源文件夾的文件列表
    file_list = os.listdir(source_dir)
    # 4.遍歷文件列表實現(xiàn)拷貝
    for file_name in file_list:
        # copy_file(file_name, source_dir, dest_dir)
        # 5.使用多線程實現(xiàn)多任務拷貝
        sub_thread = threading.Thread(target=copy_file, args=(file_name, source_dir, dest_dir))
        sub_thread.start()
   for file_name in file_list:
       sub_thread.join()
        sub_thread.join()#主線程等待所有線程結束才會結束

到此這篇關于python多線程編程的文章就介紹到這了,更多相關python多線程編程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • YOLOv5車牌識別實戰(zhàn)教程(三)模型訓練與評估

    YOLOv5車牌識別實戰(zhàn)教程(三)模型訓練與評估

    這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(三)模型訓練與評估,在這個教程中,我們將一步步教你如何使用YOLOv5進行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下
    2023-04-04
  • 詳解python中的線程與線程池

    詳解python中的線程與線程池

    這篇文章主要介紹了python線程與線程池,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • python 實現(xiàn)A*算法的示例代碼

    python 實現(xiàn)A*算法的示例代碼

    本篇文章主要介紹了python 實現(xiàn)A*算法的示例代碼,A*作為最常用的路徑搜索算法,值得我們?nèi)ド羁痰难芯浚哂幸欢ǖ膮⒖純r值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Tensorflow 查看變量的值方法

    Tensorflow 查看變量的值方法

    今天小編就為大家分享一篇Tensorflow 查看變量的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解Python如何實現(xiàn)尾遞歸優(yōu)化

    詳解Python如何實現(xiàn)尾遞歸優(yōu)化

    尾遞歸是函數(shù)返回最后一個操作是遞歸調(diào)用,則該函數(shù)是尾遞歸。本文將介紹Python是如何實現(xiàn)尾遞歸優(yōu)化的,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-05-05
  • Python實現(xiàn)雙色球號碼隨機生成

    Python實現(xiàn)雙色球號碼隨機生成

    和體彩大樂透類似,福彩雙色球也是購買次數(shù)最多的彩種之一,相比大樂透,雙色球更容易中小獎。本文將介紹?Python?實習雙色球彩票自由的流程,感興趣的可以了解一下
    2022-05-05
  • 用Python可視化新冠疫情數(shù)據(jù)

    用Python可視化新冠疫情數(shù)據(jù)

    大家好,本篇文章主要講的是用Python可視化新冠疫情數(shù)據(jù),感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python 實現(xiàn)集合Set的示例

    Python 實現(xiàn)集合Set的示例

    這篇文章主要介紹了Python 實現(xiàn)集合Set的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python異常處理操作實例詳解

    Python異常處理操作實例詳解

    這篇文章主要介紹了Python異常處理操作,結合實例形式分析了Python異常處理的相關原理、操作語句與使用技巧,需要的朋友可以參考下
    2018-05-05
  • Python圖像銳化與邊緣檢測之Sobel與Laplacian算子詳解

    Python圖像銳化與邊緣檢測之Sobel與Laplacian算子詳解

    圖像銳化和邊緣檢測主要包括一階微分銳化和二階微分銳化,本文主要講解常見的圖像銳化和邊緣檢測方法,即Sobel算子和Laplacian算子,感興趣的可以了解一下
    2022-12-12

最新評論