日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python如何关闭multiprocess_python 开启进程两种方法 multiprocessing模块 介绍

發(fā)布時間:2025/3/15 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python如何关闭multiprocess_python 开启进程两种方法 multiprocessing模块 介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一 multiprocessing模塊介紹

python中的多線程無法利用多核優(yōu)勢,如果想要充分地使用多核CPU的資源(os.cpu\_count\(\)查看),在python中大部分情況需要使用多進程。

Python提供了multiprocessing。 multiprocessing模塊用來開啟子進程,并在子進程中執(zhí)行我們定制的任務(比如函數(shù)),該模塊與多線程模塊threading的編程接口類似。

multiprocessing模塊的功能眾多:支持子進程、通信和共享數(shù)據(jù)、執(zhí)行不同形式的同步,>提供了Process、Queue、Pipe、Lock等組件。

需要再次強調的一點是:與線程不同,進程沒有任何共享狀態(tài),進程修改的數(shù)據(jù),改動僅限于該進程內。

三 Process類的使用

創(chuàng)建并開啟子進程的方式一

Process 傳字典 或者args 傳參數(shù)也可以

start()開啟子進程

from multiprocessing import Process

import time

def task(name):

print("%s is running" % name)

time.sleep(3)

print("%s is done" % name)

if __name__ == "__main__":

# 實例化

# args 為函數(shù)傳參數(shù)

t = Process(target=task, args=("子進程1",))

# 開啟子進程

t.start() # 僅僅只是給操作系統(tǒng)發(fā)送一個信號 與平常print沒有什么區(qū)別

print("主")

'''

子進程1 is running

子進程1 is done

'''

'''

看得出是先打印主 再開啟子進程1的

'''

用關鍵字參數(shù)kwargs傳參

from multiprocessing import Process

import time

def task(name):

print("%s is running" % name)

time.sleep(3)

print("%s is done" % name)

if __name__ == "__main__":

# 實例化

# 也可以用kwargs 為函數(shù)傳參數(shù) 以字典方式

t = Process(target=task, kwargs={'name': '子進程1'})

t.start()

'''

子進程1 is running

子進程1 is done

'''

應用程序是開不了子進程的 p.start() 給操作系統(tǒng)發(fā)送信號 至于操作系統(tǒng)什么時候開進程,開多長時間應用程序是控制不了。

p.start() 給操作系統(tǒng)發(fā)送信號 告訴操作系統(tǒng)給個開個子進程吧 ?操作系統(tǒng)收到后 申請內存空間 把父進程的地址空間數(shù)據(jù) 拷貝給子進程

作為子進程的初始狀態(tài)

父進程不知道操作系統(tǒng)會

默認是先 開啟主進程執(zhí)行,主進程執(zhí)行完,再開啟 子進程執(zhí)行,再到子進程執(zhí)行結束。

創(chuàng)建并開啟子進程的方式二

自己寫一個子類去繼承他 不用默認的類

方法一定要寫run

from multiprocessing import Process

import time

# 自己寫一個子類去繼承他 不用默認的類

# Process的類傳進去

class MyProcess(Process):

# 重寫了init方法 父類就被覆蓋掉

def __init__(self, name):

# 重用父類 因為父類還有很多有用功能,繼承父類

super().__init__()

self.name = name

# 方法一定要寫run

def run(self):

print("%s is running" % self.name)

time.sleep(3)

print("%s is done" % self.name)

if __name__ == "__main__":

# 實例化 直接用自己自定義的類開子進程

# args 為函數(shù)傳參數(shù)

p = MyProcess("子進程1")

# 開啟子進程

p.start() # 僅僅只是給操作系統(tǒng)發(fā)送一個信號 與平常print沒有什么區(qū)別

# p.start() 本質是調用run方法

print("主")

來源:http://www.icode9.com/content-3-250451.html

總結

以上是生活随笔為你收集整理的python如何关闭multiprocess_python 开启进程两种方法 multiprocessing模块 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。