簡體   English   中英

從多進程函數調用中檢索和合並返回的數組的有效方法

[英]Efficient way to retrieve and merge returned arrays from multiprocess function call

def get_version_list(env):
  list = []
  #do some intensive work
  return list

if __name__ == '__main__':
  from multiprocessing import Pool

  pool = Pool()

  result1 = pool.apply_async(get_version_list, ['prod'])
  result2 = pool.apply_async(get_version_list, ['uat'])
  #etc, I have six environment to check.

  alist = result1.get()
  blist = result2.get()

理想情況下,我希望有一個包含六個環境的列表,並在該列表上循環以針對每個環境(並行)調用我的函數,然后合並所有返回的列表。 聯合列表不應多次包含值。

像這樣(我知道該代碼不起作用,但這是為了讓您知道要做什么)

if __name__ == '__main__':
  from multiprocessing import Pool

  pool = Pool()

  env = ['uat', 'prod', 'lt', 'lt2', 'cert', 'sin']

  for e in env:
      result = pool.apply_async(get_version_list, [e])

  #Merging the lists of the 6 function calls (unique entries)
  list = result.get()

有簡單的方法嗎?

使用map_async而不是apply_async

pool = Pool()
env = ['uat', 'prod', 'lt', 'lt2', 'cert', 'sin']
x = pool.map_async(get_version_list, env)

現在x將是結果列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM