中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python多進程multiprocessing的原理和應用

發布時間:2021-06-29 13:41:39 來源:億速云 閱讀:275 作者:chen 欄目:開發技術

這篇文章主要介紹“python多進程multiprocessing的原理和應用”,在日常操作中,相信很多人在python多進程multiprocessing的原理和應用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python多進程multiprocessing的原理和應用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

multiprocessing多進程

概念

python多進程multiprocessing的原理和應用

創建多進程基本流程

python多進程multiprocessing的原理和應用

創建進程對象

python多進程multiprocessing的原理和應用

啟動進程 回收進程

python多進程multiprocessing的原理和應用

代碼:

import multiprocessing as mp
from time import sleep

# 進程執行函數
def fun():
    print("開始一個進程")
    sleep(3)
    print("進程結束")

# 創建進程對象
p = mp.Process(target = fun)

p.start()   # 啟動進程

p.join()    # 回收進程

運行結果:

開始一個進程
進程結束
Process finished with exit code 0

1 、父子進程是并行執行的 子進程執行函數 父進程執行除子進程外內容:

import multiprocessing as mp
from time import sleep

# 進程執行函數
def fun():
    print("開始一個進程")
    sleep(3)
    print("進程結束")

# 創建進程對象
p = mp.Process(target = fun)    # 把fun函數作為獨立子進程 其它函數由進程來執行

p.start()   # 啟動進程

sleep(2)
print("父進程執行內容")

p.join()    # 回收進程
print("===============")
"""
pid = os.fork
if pid == 0
    fun()
    os._exit(0)
else:
    os.wait()
"""

運行結果:

開始一個進程
父進程執行內容
進程結束

===============

2、子進程不能改變父進程中變量的值
代碼:

import multiprocessing as mp
from time import sleep

a = 1

# 進程執行函數
def fun():
    print("開始一個進程")
    sleep(3)
    global a
    print("a=", a)
    a = 1000
    print("a=", a)
    print("進程結束")

# 創建進程對象
p = mp.Process(target = fun)    # 把fun函數作為獨立子進程 其它函數由進程來執行

p.start()   # 啟動進程

sleep(2)
print("父進程執行內容")

p.join()    # 回收進程
print("===============")
print("a=", a)

運行結果:

開始一個進程
父進程執行內容
a= 1
a= 1000
進程結束
a= 1

創建多個進程
代碼:

"""
創建多個進程
"""

from multiprocessing import Process
import os
from time import sleep

def fun1():
    sleep(2)
    print(os.getppid(), '--', os.getpid(), "吃飯")

def fun2():
    sleep(3)
    print(os.getppid(), '--', os.getpid(), "睡覺")

def fun3():
    sleep(4)
    print(os.getppid(), '--', os.getpid(), "學習")

jobs =[]

for th in [fun1, fun2, fun3]:
    p = Process(target = th)
    jobs.append(p)
    p.start()

for i in jobs:
    i.join()

運行結果:

46013 – 46022 吃飯
46013 – 46023 睡覺
46013 – 46024 學習

含有參數的進程函數
代碼:

from multiprocessing import Process
from time import sleep

# 含有參數的進程函數
def worker(sec, name):
    for i in range(3):
        sleep(sec)
        print("I'm %s"%name)
        print("I'm working...")

# p = Process(target = worker, args = (2, "Tom"))
p = Process(target = worker, kwargs = {'name':'tom', 'sec': 2})

p.start()
p.join()

運行結果:

I'm tom
I'm working…
I'm tom
I'm working…
I'm tom
I'm working…

案例練習

python多進程multiprocessing的原理和應用

代碼:

from multiprocessing import Process
import os

filename = './dace.jpg'
size = os.path.getsize(filename)

# 復制上半部分
def up():
    fr = open(filename, 'rb')
    fw = open('bot,jpg', 'wb')
    n = size//2
    fw.write(fr.read(n))
    fw.close()
    fr.close()

# 復制下半部分
def down():
    fr = open(filename, 'rb')
    fw = open('bot,jpg', 'wb')
    fr.seek(size//2.0)
    fw.write(fr.read())
    fw.close()
    fr.close()

p = Process(target = up)
q = Process(target = down)
p.start()
q.start()
p.join()
q.join()

到此,關于“python多進程multiprocessing的原理和應用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延庆县| 鄂托克前旗| 铜梁县| 寿宁县| 宜黄县| 江山市| 阿鲁科尔沁旗| 南京市| 富蕴县| 双流县| 和林格尔县| 台北市| 涞水县| 利辛县| 湖南省| 朔州市| 红安县| 通海县| 河北省| 长汀县| 平舆县| 米易县| 湘阴县| 内乡县| 开化县| 烟台市| 龙里县| 永顺县| 华容县| 泰宁县| 大同市| 兰州市| 迭部县| 平舆县| 林西县| 彭阳县| 星子县| 班玛县| 滨州市| 昭苏县| 石家庄市|