日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python - 如何利用多進(jìn)程來(lái)解決循環(huán)嵌套速度不行的問(wèn)題?

瀏覽:151日期:2022-06-29 16:08:47

問(wèn)題描述

有一個(gè)循環(huán)里面套循環(huán)的模式,在內(nèi)循環(huán)的循環(huán)體內(nèi)要同時(shí)用到大循環(huán)和小循環(huán)的變量。

我這里是簡(jiǎn)化成了一個(gè)簡(jiǎn)單的模型,這種模式如果函數(shù)復(fù)雜的話速度超級(jí)慢,想問(wèn)一下如何使用多進(jìn)程的辦法來(lái)解決速度問(wèn)題?

我的思路是,只對(duì)小循環(huán)采用多進(jìn)程,在大循環(huán)的循環(huán)體內(nèi)寫(xiě)多進(jìn)程的代碼,但是一直失敗,求大神給出正確的代碼。

拜謝!

import random as rlist1=list(range(100))i=0reslist=[]while i<2000:#大循環(huán) alist=[]#三個(gè)列表變量,每次循環(huán)開(kāi)始時(shí)清空 blist=[] clist=[] for each in list1:#小循環(huán)x=r.randint(i+30,i+60)+each#涉及到大、小循環(huán)變量的幾個(gè)函數(shù),這里用random示意y=r.randint(i+60,i+120)+eachz=r.randint(i+60,i+180)+eachres=2.5*x-y-zreslist.append(res)#對(duì)函數(shù)結(jié)果進(jìn)行操作if res>=50: alist.append(each)if -50<res<50: blist.append(each)if res<=-50: clist.append(each)for each in alist:#在大循環(huán)中對(duì)小循環(huán)中得出的結(jié)果進(jìn)行進(jìn)一步其他操作print(each) for each in blist:print(each) for each in clist:print(each)i+=1

問(wèn)題解答

回答1:

首先,并行計(jì)算需要各個(gè)并行運(yùn)算的子程序間沒(méi)有相互因果關(guān)系。小循環(huán)內(nèi),res與x,y,z,與alist,blist,clist,都是因果關(guān)系密切的,很難拆分并行計(jì)算。題主貼上來(lái)的雖然不是原始代碼,不知道原始代碼里大循環(huán)間有沒(méi)有因果關(guān)系,不過(guò)從示意代碼來(lái)看,把大循環(huán)拆分為N個(gè)線程(用不到進(jìn)程吧)應(yīng)該是可以的,每個(gè)線程計(jì)算2000/N次。例如,分為8個(gè)線程,線程1計(jì)算i=0到249,線程2計(jì)算i=250到499,依次類推。。。這里N的大小,可以根據(jù)CPU的核數(shù)來(lái)定,如果N超過(guò)CPU的核數(shù),就沒(méi)有太大意義了,反而有可能會(huì)降低效率。

回答2:

中間應(yīng)該用elif吧,最后面for的縮進(jìn)好像也有問(wèn)題

回答3:

可以在大循環(huán)這里開(kāi)多進(jìn)程,比如大循環(huán)2000次,如CPU的核數(shù)是4,則開(kāi)4個(gè)進(jìn)程,每個(gè)進(jìn)程負(fù)責(zé)運(yùn)行500個(gè)

小循環(huán)結(jié)束后,可以開(kāi)子線程去執(zhí)行下面的這些后續(xù)操作,大循環(huán)繼續(xù)往前處理

for each in alist:#在大循環(huán)中對(duì)小循環(huán)中得出的結(jié)果進(jìn)行進(jìn)一步其他操作 print(each)for each in blist: print(each)for each in clist: print(each)回答4:

可以將小循環(huán)用子進(jìn)程去處理 不過(guò)這樣 你需要兩個(gè)大循環(huán)。一個(gè)循環(huán)處理小循環(huán) ,等處理完這個(gè)循環(huán)在來(lái)個(gè)大循環(huán)處理后面的事情

像這樣

import random as rdef cumput(i, list1): alist = [] blist = [] clist = [] reslist = [] for each in list1: # 小循環(huán)x = r.randint(i + 30, i + 60) + each # 涉及到大、小循環(huán)變量的幾個(gè)函數(shù),這里用random示意y = r.randint(i + 60, i + 120) + eachz = r.randint(i + 60, i + 180) + eachres = 2.5 * x - y - zreslist.append(res) # 對(duì)函數(shù)結(jié)果進(jìn)行操作if res >= 50: alist.append(each)if -50 < res < 50: blist.append(each)if res <= -50: clist.append(each) return alist, blist, clist, reslistif __name__ == ’__main__’: multiprocessing.freeze_support() list1 = list(range(100)) i = 0 pool = multiprocessing.Pool(2) res = {} while i < 2000: # 大循環(huán)res[i]=pool.apply_async(cumput, (i, list1,))i += 1 pool.close() pool.join() for i in res:for each in res[i].get()[0]: # 在大循環(huán)中對(duì)小循環(huán)中得出的結(jié)果進(jìn)行進(jìn)一步其他操作 print(each)for each in res[i].get()[1]: print(each)for each in res[i].get()[2]: print(each)回答5:

如果小循環(huán)中執(zhí)行的函數(shù)比較耗時(shí)的話可以考慮生產(chǎn)者-消費(fèi)者模型

import randomfrom threading import Threadfrom Queue import Queueresqueue = Queue()aqueue = Queue()bqueue = Queue()cqueue = Queue()def producer(): list1=list(range(100))for _ in range(2000):for each in list1: x=r.randint(i+30,i+60)+each y=r.randint(i+60,i+120)+each z=r.randint(i+60,i+180)+eachres=2.5*x-y-z resqueue.put(res)if res>=50:aqueue.put(each) if -50<res<50:bqueue.put(each) if res<=-50:cqueue.put(each)def consumer_a(): while True:try: data = aqueue.get(timeout=5)except Queue.Empty: returnelse: # 耗時(shí)操作 deal_data(data) aqueue.task_done() def consumer_b(): while True:try: data = bqueue.get(timeout=5)except Queue.Empty: returnelse: # 耗時(shí)操作 deal_data(data) bqueue.task_done() def consumer_c(): while True:try: data = cqueue.get(timeout=5)except Queue.Empty: returnelse: # 耗時(shí)操作 deal_data(data) cqueue.task_done() def consumer_res(): while True:try: data = resqueue.get(timeout=5)except Queue.Empty: returnelse: # 耗時(shí)操作 deal_data(data) resqueue.task_done() if __name__ == '__main__': t1 = Thread(target=producer) t2 = Thread(target=consumer_a) ...t1.start() t2.start() 回答6:

題主是不是應(yīng)該先設(shè)計(jì)好進(jìn)程的輸入與輸出,多進(jìn)程做并行計(jì)算的話進(jìn)程之間的通信是最重要的,據(jù)我了解的應(yīng)該是MPI,比如多層循環(huán),應(yīng)該是先分發(fā)部分?jǐn)?shù)據(jù)到每個(gè)進(jìn)程,每個(gè)進(jìn)程做計(jì)算后再返回?cái)?shù)據(jù)整合點(diǎn),然后合并結(jié)果輸出。

還有一個(gè)比較重要的點(diǎn)是估算每個(gè)進(jìn)程的執(zhí)行時(shí)間,畢竟有進(jìn)程間的通信的話等待時(shí)間也會(huì)導(dǎo)致效率下降。

@一代鍵客 所說(shuō),你的嵌套不太符合并行計(jì)算的輸入規(guī)則,可以看看這個(gè)例子

http://blog.csdn.net/zouxy09/...

之前測(cè)試過(guò)文中的例子,沒(méi)啥問(wèn)題,你沿著這些做的話應(yīng)該是可以搞出來(lái)的

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99视频一区| 99热精品久久| 视频一区二区中文字幕| 亚洲欧洲一区| 亚洲日本欧美| 国产精品jk白丝蜜臀av小说| 国产日韩欧美一区二区三区在线观看| 97久久超碰| 国内精品伊人| 欧美91精品| 日韩欧美另类中文字幕| 国产一区二区三区黄网站 | 天堂久久一区| 麻豆成人av在线| 九一成人免费视频| 中文在线日韩| 国产欧美一区二区三区精品酒店 | 青草综合视频| 亚洲精品网址| 福利欧美精品在线| 日本不卡高清| 亚洲第一区色| 日韩欧美久久| 不卡中文字幕| 欧美精品91| 国产欧美成人| 国产精品一区二区精品视频观看| 深夜福利亚洲| 日韩精品乱码av一区二区| 黄色成人91| 亚洲欧美日韩视频二区| 日韩视频二区| 国产精品美女| 亚洲男人在线| 国产精品亚洲欧美| 精品亚洲成人| www成人在线视频| 亚洲夜间福利| 美女国产一区| 蜜臀久久99精品久久久久久9 | 亚洲成人日韩| 日韩精品dvd| 日韩毛片一区| 视频一区在线视频| 日韩一区二区在线免费| 国产欧美亚洲精品a| 久久精品国产大片免费观看| 国产一区 二区| 日本伊人久久| 国产精品91一区二区三区| 精品一区二区男人吃奶 | 91视频久久| 免费观看在线色综合| 欧美日韩四区| 国产aⅴ精品一区二区四区| 亚洲精品影视| 黄色亚洲大片免费在线观看| 日韩av免费| 精品在线99| 亚洲欧美日本日韩| 亚洲欧美日韩精品一区二区| 性色一区二区| 亚洲精品小说| 亚洲影院天堂中文av色| 亚洲高清影视| av一区在线| 国产一区二区三区黄网站| 日本特黄久久久高潮| 欧美日韩1区2区3区| 青青伊人久久| 欧美激情麻豆| 国际精品欧美精品| 国产成人精品三级高清久久91| 精品视频网站| 国产美女高潮在线| 婷婷亚洲五月| 日韩精品成人在线观看| 国产欧美激情| 久久a爱视频| 麻豆精品新av中文字幕| 欧美视频二区| 免费在线观看视频一区| 91欧美极品| 国产精品magnet| 视频一区视频二区中文字幕| 精品久久久中文字幕| 妖精视频成人观看www| 国产私拍福利精品视频二区| 久久中文字幕av一区二区不卡| 久久精品av麻豆的观看方式| 香蕉久久99| 精品国产中文字幕第一页| 狠狠爱成人网| 国产aa精品| 国产精品亚洲片在线播放| 巨乳诱惑日韩免费av| 国产一区二区三区四区五区| 亚洲精品少妇| 91久久在线| 免费高潮视频95在线观看网站| 欧美精品中文| 久久aⅴ国产紧身牛仔裤| 国产一区二区三区四区五区| 欧美日韩网址| 国产精品视频一区二区三区四蜜臂| 日韩视频中文| 国产精品91一区二区三区| 久久青草久久| 日韩专区精品| 国产精品国产三级国产在线观看| 国产色噜噜噜91在线精品| 欧美日韩国产亚洲一区| 丝袜美腿一区| 精品日韩视频| 久久久久欧美精品| 91精品一区二区三区综合| 少妇久久久久| 91精品成人| 中文欧美日韩| 亚洲三级av| 蜜桃久久精品一区二区| 国产精品亚洲产品| 亚洲欧洲国产精品一区| 亚洲深夜影院| 久久av导航| 日本成人在线一区| 国产麻豆久久| 中文av在线全新| 欧美自拍一区| 日韩国产在线观看一区| 亚洲乱码一区| 日韩中文字幕视频网| 噜噜噜躁狠狠躁狠狠精品视频| 欧美特黄视频| 午夜欧美精品| 亚洲天堂黄色| 黄色成人精品网站| 国产精品色网| 亚洲精品黄色| 日韩精品91亚洲二区在线观看| 综合国产精品| 三级在线观看一区二区| 少妇精品久久久一区二区| 风间由美中文字幕在线看视频国产欧美| 国产精品s色| av日韩中文| 一区在线视频观看| 国产精品亚洲综合久久| 精品黄色一级片| 久久蜜桃av| 亚洲欧美专区| 亚洲高清久久| 日本少妇精品亚洲第一区| 麻豆免费精品视频| 成人在线网站| 蜜臀国产一区二区三区在线播放| 99香蕉国产精品偷在线观看 | 视频二区不卡| 亚洲精品护士| 99视频精品视频高清免费| 日韩高清电影一区| 午夜国产一区二区| 国产极品模特精品一二| 国产亚洲在线观看| 国产91在线精品| 欧美日韩调教| 四虎影视精品| 精品三区视频| 欧美三级第一页| 欧美日韩四区| 精品美女在线视频| 亚洲美女91| 久久91导航| 久久精品免视看国产成人| 日本视频在线一区| 石原莉奈一区二区三区在线观看| 日本精品不卡| 精品久久精品| 日韩一区二区三区精品 | 九色精品91| 日本黄色精品| 精品久久免费| 国产精品主播在线观看| 亚洲欧美久久久| 99精品视频在线| 精品深夜福利视频| 97精品国产99久久久久久免费| 亚洲色图网站| 亚洲免费成人| 亚洲综合精品| 中日韩男男gay无套| 一区二区视频欧美| 99精品在线观看| 亚洲91视频| 国产 日韩 欧美 综合 一区| 国产在视频一区二区三区吞精| 欧美韩一区二区| 日韩久久电影| 久久国产电影| 亚洲一区日本|