如何使用Python3多重处理来追加列表?

问题描述 投票:0回答:2

我有一个空列表empty_list = []和另外2个列表:list1=[[1,2,3],[4,5,6],[7,8,9]]list2=[[10,11,12],[13,14,15],[16,17,18]]

我想两件事:

  1. 我想从列表中选择[1,2,3],然后从[10,11,12]中选取[1,2,3,10,11,12][4,5,6][13,14,15]形成[4,5,6,13,14,15],最后将[7,8,9],[17,18,19]形成[7,8,9,17,18,19]

    ] >
  2. listA=[1,2,3,10,11,12]listB=[4,5,6,13,14,15]listC=[7,8,9,17,18,19]附加为axis=0为空。

  3. 我已经通过非多进程完成了这项工作,但是速度很慢。我想问一下如何通过多进程来做到这一点。我有两种幼稚的方法,但不知道如何实现。

  1. 使用游泳池,

    制作一个func0,用于拾取子列表并使用pool.map(func0,[lst for lst in[ list1,list2,list3]]合并它们

    [将func1附加到空然后再添加listA, listB, listCpool.map(func1,[lst for lst in [listA,listB,listC]])

  2. 使用multiprocessing.Array但我还没有弄清楚怎么做]]

  3. 此示例可能不需要使用多重处理,但是我有数千行的列表。

我有一个空列表empty_list = []和2个其他列表:list1 = [[1,2,3],[4,5,6],[7,8,9]],list2 = [[10, 11,12],[13,14,15],[16,17,18]。我想做两件事:我想从[],] >>

我不确定这是否有帮助,但是您可以避免一些列表理解:

empty_list=[]
for l1,l2 in zip(list1,list2):
    empty_list.append(l1+l2)

让我们用一些随机列表检查时间性能:

import timeit
code_to_test = """
import numpy as np
list1 = [np.random.randint(0,10, 100).tolist() for i in range(10_000)]
list2 = [np.random.randint(0,10, 100).tolist() for i in range(10_000)]

empty_list=[]
for l1,l2 in zip(list1,list2):
    empty_list.append(l1+l2)
"""
elapsed_time = timeit.timeit(code_to_test, number=100)/100
print(elapsed_time, ' seconds')
0.12564824399999452 seconds

您可以使用dask并行执行numpy操作:

import dask.array as da
list1 = da.from_array(list1)
list2 = da.from_array(list2)

result = da.hstack([list1,list2])
result.compute()
python-3.x multithreading list numpy multiprocessing
2个回答
0
投票

我不确定这是否有帮助,但是您可以避免一些列表理解:

empty_list=[]
for l1,l2 in zip(list1,list2):
    empty_list.append(l1+l2)

0
投票

您可以使用dask并行执行numpy操作:

import dask.array as da
list1 = da.from_array(list1)
list2 = da.from_array(list2)

result = da.hstack([list1,list2])
result.compute()
© www.soinside.com 2019 - 2024. All rights reserved.