第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以通過將函數(shù)應(yīng)用于具有多處理功能的數(shù)據(jù)對象中的項(xiàng)目來提高性能嗎?

我可以通過將函數(shù)應(yīng)用于具有多處理功能的數(shù)據(jù)對象中的項(xiàng)目來提高性能嗎?

侃侃爾雅 2021-08-11 22:00:10
我已經(jīng)瀏覽了大量multiprocessing關(guān)于 SO 和文檔的答案,要么這些問題真的很老(Python 3.X 自那以后進(jìn)行了大量改進(jìn))要么沒有找到明確的答案。如果我可能錯過了一些相關(guān)的東西,請為我指明正確的方向。我從我在文件夾模塊中定義的一個簡單函數(shù)開始,因?yàn)槲艺谶\(yùn)行 Jupyter Notebook,并且似乎由于沖突,您只能multiprocessing在導(dǎo)入的函數(shù)上運(yùn)行:def f(a):    return a * 100構(gòu)建了一些測試數(shù)據(jù)并運(yùn)行了一些測試:from itertools import zip_longestfrom multiprocessing import Process, Pool, Array, Queuefrom time import timefrom modules.test import *li = [i for i in range(1000000)]列表理解:真的很快start = time()tests = [f(i) for i in li]print(f'Total time {time() - start} s')>> Total time 0.154066801071167 s此處SO 示例的答案:11 秒左右start = time()results = []if __name__ == '__main__':    jobs = 4    size = len(li)    heads = list(range(size//jobs, size, size//jobs)) + [size]    tails = range(0,size,size//jobs)    pool = Pool(4)    for tail,head in zip(tails, heads):        r = pool.apply_async(f, args=(li[tail:head],))        results.append(r)    pool.close()    pool.join() # wait for the pool to be doneprint(f'Total time {time() - start} s')>>Total time 11.087551593780518 s還有Process一個我不知道是否適用于上面的例子。我不熟悉multiprocessing但確實(shí)理解創(chuàng)建新實(shí)例有一些開銷,但隨著數(shù)據(jù)的增長,它應(yīng)該證明開銷是合理的。我的問題是,根據(jù) Python 3.x 的當(dāng)前性能,是否使用multiprocessing與上述類似的操作仍然相關(guān),或者甚至應(yīng)該嘗試一些操作。如果是,如何將它們應(yīng)用于并行化工作負(fù)載。我讀過和理解的大多數(shù)示例都用于網(wǎng)絡(luò)抓取,當(dāng)在一個接收信息的進(jìn)程中有實(shí)際空閑時間時,并行化是有意義的,但是如果您正在運(yùn)行諸如列表或字典之類的計(jì)算,將如何處理它.
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號