最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解python多線程編程

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

進(jìn)程

進(jìn)程的概念:
進(jìn)程是資源分配的最小單位,他是操作系統(tǒng)進(jìn)行資源分配和調(diào)度運(yùn)行的基本單位。通俗理解:一個(gè)正在運(yùn)行的一個(gè)程序就是一個(gè)進(jìn)程。例如:正在運(yùn)行的qq、wechat等,它們都是一個(gè)進(jìn)程。
進(jìn)程的創(chuàng)建步驟
1.導(dǎo)入進(jìn)程包
 import multiprocessing
2.通過進(jìn)程類創(chuàng)建進(jìn)程對(duì)象
 進(jìn)程對(duì)象 = multiprocessing.Process()
3.啟動(dòng)進(jìn)程執(zhí)行任務(wù)
 進(jìn)程對(duì)象.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() #這個(gè)方法可以等待子進(jìn)程結(jié)束后再繼續(xù)往下運(yùn)行,通常用于進(jìn)程間的同步
    d1.join()
    print(time.time()-time1)

帶有參數(shù)的進(jìn)程

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()

進(jìn)程的注意點(diǎn)

主進(jìn)程會(huì)等待所有的子進(jìn)程執(zhí)行結(jié)束在結(jié)束

設(shè)置守護(hù)主進(jìn)程

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

線程

線程的介紹

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

線程的創(chuàng)建步驟
導(dǎo)入線程包
 import threading
通過線程類創(chuàng)建進(jìn)程對(duì)象
 線程對(duì)象 = threading.Thread()
啟動(dòng)線程執(zhí)行任務(wù)
 線程對(duì)象.start()

優(yōu)缺點(diǎn)對(duì)比

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

案例-多進(jìn)程實(shí)現(xiàn)視頻文件夾多任務(wù)拷貝器

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

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

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

    # 2.創(chuàng)建目標(biāo)文件夾
    try:
        os.mkdir(dest_dir)
    except:
        print("目標(biāo)文件夾已經(jīng)存在")
    # 3.讀取源文件夾的文件列表
    file_list = os.listdir(source_dir)
    # 4.遍歷文件列表實(shí)現(xiàn)拷貝
    for file_name in file_list:
        # copy_file(file_name, source_dir, dest_dir)
        # 5.使用多線程實(shí)現(xiàn)多任務(wù)拷貝
        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()#主線程等待所有線程結(jié)束才會(huì)結(jié)束

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

相關(guān)文章

  • python os.fork() 循環(huán)輸出方法

    python os.fork() 循環(huán)輸出方法

    今天小編就為大家分享一篇python os.fork() 循環(huán)輸出方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • numpy數(shù)組疊加的實(shí)現(xiàn)示例

    numpy數(shù)組疊加的實(shí)現(xiàn)示例

    本文主要介紹了numpy數(shù)組疊加的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 詳解TensorFlow2實(shí)現(xiàn)前向傳播

    詳解TensorFlow2實(shí)現(xiàn)前向傳播

    這篇文章主要介紹了TensorFlow2如何實(shí)現(xiàn)前向傳播,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python之ThreadPoolExecutor線程池問題

    Python之ThreadPoolExecutor線程池問題

    這篇文章主要介紹了Python之ThreadPoolExecutor線程池問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • pip指定python位置安裝軟件包的方法

    pip指定python位置安裝軟件包的方法

    今天小編就為大家分享一篇pip指定python位置安裝軟件包的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python爬蟲之超級(jí)鷹驗(yàn)證碼應(yīng)用

    Python爬蟲之超級(jí)鷹驗(yàn)證碼應(yīng)用

    眾所周知python是一個(gè)很強(qiáng)大的語言,它擁有眾多的庫,今天我嘗試了使用超級(jí)鷹第三方平臺(tái)進(jìn)行驗(yàn)證碼的開發(fā),需要的朋友可以參考下
    2022-08-08
  • python圖片由RGB空間轉(zhuǎn)成LAB空間的實(shí)現(xiàn)方式

    python圖片由RGB空間轉(zhuǎn)成LAB空間的實(shí)現(xiàn)方式

    這篇文章主要介紹了python圖片由RGB空間轉(zhuǎn)成LAB空間的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • python內(nèi)置HTTP Server如何實(shí)現(xiàn)及原理解析

    python內(nèi)置HTTP Server如何實(shí)現(xiàn)及原理解析

    這篇文章主要為大家介紹了python內(nèi)置HTTP Server如何實(shí)現(xiàn)及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 使用OpenCV去除面積較小的連通域

    使用OpenCV去除面積較小的連通域

    這篇文章主要介紹了使用OpenCV去除面積較小的連通域,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python中opencv實(shí)現(xiàn)圖片文本傾斜校正

    python中opencv實(shí)現(xiàn)圖片文本傾斜校正

    圖片有的時(shí)候需要矯正,本文主要介紹了python中opencv實(shí)現(xiàn)圖片文本傾斜校正,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評(píng)論

南汇区| 绥德县| 墨竹工卡县| 双峰县| 日土县| 万源市| 永川市| 宁武县| 从化市| 斗六市| 团风县| 兰州市| 象州县| 孟村| 浏阳市| 深泽县| 宁德市| 娱乐| 乌拉特前旗| 麟游县| 丰宁| 志丹县| 视频| 兴国县| 鹤山市| 垫江县| 宜良县| 华坪县| 洪泽县| 佳木斯市| 厦门市| 通许县| 高州市| 左权县| 镇沅| 江华| 塘沽区| 漾濞| 隆德县| 邻水| 鹿泉市|