主頁(yè) > 知識(shí)庫(kù) > 總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)

總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)

熱門標(biāo)簽:銀川電話機(jī)器人電話 企業(yè)彩鈴地圖標(biāo)注 電銷機(jī)器人錄音要學(xué)習(xí)什么 如何地圖標(biāo)注公司 上海正規(guī)的外呼系統(tǒng)最新報(bào)價(jià) 長(zhǎng)春極信防封電銷卡批發(fā) 外賣地址有什么地圖標(biāo)注 預(yù)覽式外呼系統(tǒng) 煙臺(tái)電話外呼營(yíng)銷系統(tǒng)

multiprocessing多進(jìn)程

概念

創(chuàng)建多進(jìn)程基本流程

創(chuàng)建進(jìn)程對(duì)象

啟動(dòng)進(jìn)程 回收進(jìn)程

代碼:

import multiprocessing as mp
from time import sleep

# 進(jìn)程執(zhí)行函數(shù)
def fun():
    print("開(kāi)始一個(gè)進(jìn)程")
    sleep(3)
    print("進(jìn)程結(jié)束")

# 創(chuàng)建進(jìn)程對(duì)象
p = mp.Process(target = fun)

p.start()   # 啟動(dòng)進(jìn)程

p.join()    # 回收進(jìn)程

運(yùn)行結(jié)果:

開(kāi)始一個(gè)進(jìn)程
進(jìn)程結(jié)束
Process finished with exit code 0

1 、父子進(jìn)程是并行執(zhí)行的 子進(jìn)程執(zhí)行函數(shù) 父進(jìn)程執(zhí)行除子進(jìn)程外內(nèi)容:

import multiprocessing as mp
from time import sleep

# 進(jìn)程執(zhí)行函數(shù)
def fun():
    print("開(kāi)始一個(gè)進(jìn)程")
    sleep(3)
    print("進(jìn)程結(jié)束")

# 創(chuàng)建進(jìn)程對(duì)象
p = mp.Process(target = fun)    # 把fun函數(shù)作為獨(dú)立子進(jìn)程 其它函數(shù)由進(jìn)程來(lái)執(zhí)行

p.start()   # 啟動(dòng)進(jìn)程

sleep(2)
print("父進(jìn)程執(zhí)行內(nèi)容")

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

運(yùn)行結(jié)果:

開(kāi)始一個(gè)進(jìn)程
父進(jìn)程執(zhí)行內(nèi)容
進(jìn)程結(jié)束

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

2、子進(jìn)程不能改變父進(jìn)程中變量的值
代碼:

import multiprocessing as mp
from time import sleep

a = 1

# 進(jìn)程執(zhí)行函數(shù)
def fun():
    print("開(kāi)始一個(gè)進(jìn)程")
    sleep(3)
    global a
    print("a=", a)
    a = 1000
    print("a=", a)
    print("進(jìn)程結(jié)束")

# 創(chuàng)建進(jìn)程對(duì)象
p = mp.Process(target = fun)    # 把fun函數(shù)作為獨(dú)立子進(jìn)程 其它函數(shù)由進(jìn)程來(lái)執(zhí)行

p.start()   # 啟動(dòng)進(jìn)程

sleep(2)
print("父進(jìn)程執(zhí)行內(nèi)容")

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

運(yùn)行結(jié)果:

開(kāi)始一個(gè)進(jìn)程
父進(jìn)程執(zhí)行內(nèi)容
a= 1
a= 1000
進(jìn)程結(jié)束
a= 1

創(chuàng)建多個(gè)進(jìn)程
代碼:

"""
創(chuàng)建多個(gè)進(jìn)程
"""

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(), "睡覺(jué)")

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

jobs =[]

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

for i in jobs:
    i.join()

運(yùn)行結(jié)果:

46013 – 46022 吃飯
46013 – 46023 睡覺(jué)
46013 – 46024 學(xué)習(xí)

含有參數(shù)的進(jìn)程函數(shù)
代碼:

from multiprocessing import Process
from time import sleep

# 含有參數(shù)的進(jìn)程函數(shù)
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()

運(yùn)行結(jié)果:

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

案例練習(xí)

代碼:

from multiprocessing import Process
import os

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

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

# 復(fù)制下半部分
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()

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

您可能感興趣的文章:
  • 分析詳解python多線程與多進(jìn)程區(qū)別
  • 手把手帶你了解python多進(jìn)程,多線程
  • Python多進(jìn)程共享numpy 數(shù)組的方法
  • Python多線程與多進(jìn)程相關(guān)知識(shí)總結(jié)
  • python實(shí)現(xiàn)多進(jìn)程并發(fā)控制Semaphore與互斥鎖LOCK
  • python 多進(jìn)程和多線程使用詳解
  • python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler
  • Python多進(jìn)程與多線程的使用場(chǎng)景詳解
  • python多進(jìn)程執(zhí)行方法apply_async使用說(shuō)明
  • Python 多進(jìn)程原理及實(shí)現(xiàn)
  • python多線程和多進(jìn)程關(guān)系詳解
  • Python多進(jìn)程的使用詳情

標(biāo)簽:盤錦 佳木斯 珠海 潮州 宜昌 湖北 西寧 上饒

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)》,本文關(guān)鍵詞  總結(jié),python,多,進(jìn)程,multiprocessing,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章