欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python多進程使用總結

系統 1779 0

本文參考“郭靖愕然——python的多線程與多進程”對多進程/多線程的概念進行理解,結合實際運用情況對python多進程進行整理。

一、進程與線程Process&Thread

進程 是操作系統進行資源分配的最小單元,資源包括CPU、內存、磁盤等IO設備等等,而 線程 是CPU調度的基本單位。舉個簡單的例子來幫助理解:我們電腦上同時運行的瀏覽器和視頻播放器是兩個不同的進程,進程可能包含多個子任務,這些子任務就是線程,比如視頻播放器在播放視頻時要同時顯示圖像、播放聲音、顯示字幕,這就是三個線程

多線程與多進程的執行方式是一樣的,都是由操作系統在多個線程/進程之間快速切換,讓每個線程/進程都短暫地交替運行,看起來就像同時執行一樣。多線程/多進程使程序的執行速度和CPU的利用效率大大提升。絕大多數主流的編程語言都能很好地支持多線程,然而 python 由于 GIL 鎖無法實現真正的多線程

python多線程和多進程不存在優劣之分,兩者都有著各自的應用環境。線程幾乎不占資源,系統開銷少,切換速度快,而且同一個進程的多個線程之間能很容易地實現數據共享;而創建進程需要為它分配單獨的資源,系統開銷大,切換速度慢,而且不同進程之間的數據默認是不可共享的。

二、python實現多進程

使用multiprocessing模塊創建Pool進程池

使用functools模塊partial方法傳入固定參數

            
              # -*- coding: utf-8 -*-
'''
Created on 2019年5月28日
@author: H
'''

import time
from multiprocessing import Pool as ProcessPool
from functools import partial
import pandas as pd
import numpy as np
 
def Tpara(par4,x,y):
    m,n,p,ti=par4
    print(str(ti)+'...')
    value=(m+n)*(p-x)/y
    errorList=[m,n,p,value]
    valueDF=pd.DataFrame([errorList],columns=['m','n','p','value'])
    return valueDF

def main():
    # wall time(即墻上時鐘)time.time();CPU時間time.clock()
    start=time.time() 
    start_run_time=str(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(start)))
    print('start time : '+start_run_time)
    # 獲取Tpara()可變參數par4
    para4=[]
    mList=[7,8,9,10]
    nList=[0.5,0.4,0.3,0.2,0.1]
    pList=[0.6,0.7,0.8,0.9,1]
    ti=0 #記錄任務編號
    for m in mList:
        for n in nList:
            for p in pList:
                ti+=1
                para4.append((m,n,p,ti))
    poolNum=4 #進程數
    p=ProcessPool(poolNum)
    partial_work = partial(Tpara,x=3,y=5) #傳入Tpara函數的固定參數
    valueListIte = p.map(partial_work, para4) #傳入Tpara函數的可變參數
    p.close()
    p.join()
    #對全部任務的返回值進行匯總獲取最大值
    valueTDF=pd.DataFrame(columns=['m','n','p','value'])
    for rangeNum in range(len(valueListIte)):
        valueTDF=pd.concat([valueTDF,valueListIte[rangeNum]],ignore_index=True,axis=0)#axis默認0縱向拼接
    MVPvalue=valueTDF.loc[valueTDF['value']==np.max(valueTDF['value'].astype(float))]#返回最大value所在行
    print('==========valueTDF')
    print(valueTDF)
    print('==========MVPvalue')
    print(MVPvalue)
    end=time.time()
    end_run_time=str(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(end)))
    print('end time : '+end_run_time)
    print('Running time : %s Seconds'%(end-start)) 
    
if __name__ == '__main__':
    main()
            
          

運行結果:

python多進程使用總結_第1張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91精品国产91久久久久久 | 欧美在线另类 | 操操影视| 一区二区在线免费观看 | 亚洲日本中文 | 日韩欧美亚洲国产 | 精品一区二区三区在线观看国产 | 久久久久琪琪免费影院 | 色婷婷六月丁香在线观看 | 天天爱天天做久久天天狠狼 | 欧美 日韩 国产 一区 | 久久观看 | 天干夜天天夜天干天国产电影 | 亚洲国产区| 久久精品a一级国产免视看成人 | 日本精品在线 | 欧美日韩不卡 | 免费激情网址 | 99视频久久精品久久 | 狠狠色噜噜狠狠狠狠米奇777 | 亚洲一区二区视频在线观看 | 免费视频爱爱太爽了 | 欧美在线不卡视频 | 精品一区二区国语对白 | 国产人成久久久精品 | 日本精品视频 | 精品欧美一区二区三区四区 | 一级片视频免费 | 久久精品99久久 | 久久久一区二区 | 日韩啊啊啊 | 亚洲综合激情另类小说区 | 综合电影网 | 免费大片在线观看网站 | 免费成人直播 | 天天综合国产 | 欧美综合自拍亚洲综合网 | 欧美性色黄大片www 成人免费播放视频777777 | 午夜激情av | 99久久久无码国产精品 | 亚洲欧洲日本在线观看 |