国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python多進程的使用詳情

Python多進程的使用詳情

2022-01-07 10:06碼農飛哥 Python

本篇重點介紹Python多進程的使用,主要介紹其的一些方法及進程的創建等,想進一步了解的小伙伴請跟小編一起進入下文吧

一、進程的創建

Pythonmultiprocessing模塊提供了Process類,該類可用來在各平臺下創建新進程。其構造函數是:

?
1
__init__(self, group=None, target=None, name=None, args=(), kwargs={})

其中,各個參數的含義如下:

  • group: 該參數未實現,不需要傳參
  • target:為新建進程指定執行任務,也就是指定一個函數
  • args:以元組的方式,為target指定的方法傳遞參數,如果傳入的是元組中有多個參數的話則傳入方式是(arg1,arg2,....argn,)
  • kwargs:以字典的方法,為target指定的方法傳遞參數。
  • name: 為新建進程設置名稱

1、一些常用方法介紹

start() 方法用于啟動進程
run() 方法用于運行所要執行的任務
is_alive() 方法用于判斷當前進程是否還活著
getPid() 方法用于獲取進程的ID號。

直接創建Process類的實例對象,由此就可以創建一個新的進程;

這個就類似于直接創建實例化線程Thread類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from multiprocessing import Process
import os
# 定義要調用的方法
def async_fun(name, add):
    for arc in add:
        print(name + str(os.getpid()) + " " + arc)
 
if __name__ == '__main__':
    my_tuple = ("碼農飛哥", "今天是宅家的一天", "30歲了還沒對象焦慮呀")
 
    # 創建進程
    process = Process(target=async_fun, args=("子進程", my_tuple))
    # 啟動子進程
    process.start()
    # 啟動主進程
    async_fun("主進程", my_tuple)

運行結果是:

主進程11610 碼農飛哥
主進程11610 今天是宅家的一天
主進程11610 30歲了還沒對象焦慮呀
子進程11612 碼農飛哥
子進程11612 今天是宅家的一天
子進程11612 30歲了還沒對象焦慮呀

這里需要注意的一點是,必須要將代碼放在if __name__ == '__main__': 代碼塊中。通過os.getpid()方法來獲取進程號。

通過繼承Process類的子類,創建實例對象,也可以創建新的進程。

第二種方式就是通過繼承Process類的子類,創建實例對象,也可以創建新的進程,不過這種方式需要重寫父類的run()方法。這種方法就類似于直接繼承Thread類創建線程。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import multiprocessing
import os
 
 
# 定義要調用的方法
def async_fun(name, add):
    for arc in add:
        print(name + str(os.getpid()) + " " + arc)
 
 
class MyProcess(multiprocessing.Process):
    def __init__(self, name, add):
        multiprocessing.Process.__init__(self)
        self.add = add
        self.name = name
        # 重寫run()方法
 
    def run(self):
        async_fun(self.name, self.add)
 
 
if __name__ == '__main__':
    my_tuple = ("碼農飛哥", "今天是宅家的一天", "宅家也不能虛度")
    myprocess = MyProcess("子進程", my_tuple)
    myprocess.start()
    # 主進程
    async_fun("主進程", my_tuple)

運行結果同上:

主進程11610 碼農飛哥
主進程11610 今天是宅家的一天
主進程11610 30歲了還沒對象焦慮呀
子進程11612 碼農飛哥
子進程11612 今天是宅家的一天
子進程11612 30歲了還沒對象焦慮呀

這里還是推薦使用第一種方法創建進程,因為這種方式創建進程比較簡潔

二、進程池的使用

由于創建進程對系統的開銷比較大。所以,所以在實際開發中一般都會使用進程池來創建進程。進程池的使用與線程池的使用也是有神似的地方。同樣的在multiprocessing模塊中提供了Pool函數來創建進程池。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import os
from multiprocessing import Pool
import time
 
 
# 定義要調用的方法
def async_fun(add):
    time.sleep(1)
    print("進程號:" + str(os.getpid()) + " " + add)
 
 
if __name__ == '__main__':
    add = "碼農飛哥,今天是宅家的一天,30歲了還沒對象焦慮呀"
    # 創建包含4個進程的進程池
    pool = Pool(processes=4)
    # 提交action
    pool.apply_async(func=async_fun, args=(add,))
    pool.apply_async(func=async_fun, args=("加油加油",))
    pool.close()
    pool.join()

運行結果是:

進程號:11658 碼農飛哥,今天是宅家的一天,30歲了還沒對象焦慮呀
進程號:11659 加油加油

同樣的進程池也可以通過with語句來創建

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from multiprocessing import Pool
import os
import time
 
 
def async_add(max):
    time.sleep(1)
    print("進程號:" + str(os.getpid()) + "最大值是" + str(max))
 
 
if __name__ == '__main__':
    with Pool(processes=4) as pool:
        # 使用線程池執行max計算
        results = pool.map(async_add, (20, 30, 40, 50))

運行結果是:

進程號:11726最大值是20
進程號:11725最大值是30
進程號:11727最大值是40
進程號:11728最大值是50

三、多進程和多線程的優缺點對比

多進程的優點就是穩定性好,一個子進程崩潰了,不會影響主進程以及其余子進程,各個子進程各用一套獨立的內存空間。多線程的優點就是效率高,適用于批處理等功能。
多進程的缺點就是創建進程的代價非常大,因為操作系統要給每個進程分配固定的資源,并且操作系統對進程的總數會有一定的限制,若進程過多,操作系統調度都會存在問題,會造成假死狀況。

總結:

到此這篇關于Python多進程的使用詳情的文章就介紹到這了,更多相關Python多進程的使用,內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/u014534808/article/details/120250312

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久手机免费视频 | 天堂av中文在线 | 精品一区二区免费视频视频 | 欧美精品v国产精品v日韩精品 | 国产精品99久久久久久动医院 | 中文字幕在线一区二区三区 | a级三四级黄大片 | 亚洲视频精品 | 精品视频一区二区 | 亚洲一区二区中文字幕 | 久久久久久国产精品高清 | 青青久视频 | 久毛片| 香蕉大人久久国产成人av | 亚洲第一色| 日韩国产免费观看 | 日韩a视频| 亚洲一区亚洲二区 | 91精品国产91久久久久久吃药 | 天天干天天射天天操 | 成人国产精品久久久 | 国产精品久久久久久久岛一牛影视 | 2023国产精品久久久精品双 | 久久久久久综合 | 亚洲国产成人av好男人在线观看 | 亚洲va欧美va人人爽成人影院 | 在线中文一区 | 欧美日韩精品一区二区三区 | 午夜寂寞少妇aaa片毛片 | 国产综合在线视频 | 一区二区av | 成人免费视频网站在线看 | 国产一区二区黑人欧美xxxx | 亚洲国产一区二区三区在线播放 | 春色网站 | 国产精品亚洲精品 | 欧美一级在线观看 | 成人av在线一区二区 | 精品一区二区三区免费视频 | 日韩福利在线 | 亚洲毛片在线 |