我不确定这是否有帮助,但是您可以避免一些列表理解:
empty_list=[]
for l1,l2 in zip(list1,list2):
empty_list.append(l1+l2)
我有一个空列表empty_list = []
和另外2个列表:list1=[[1,2,3],[4,5,6],[7,8,9]]
,list2=[[10,11,12],[13,14,15],[16,17,18]]
。
我想两件事:
我想从列表中选择[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]
将listA=[1,2,3,10,11,12]
,listB=[4,5,6,13,14,15]
,listC=[7,8,9,17,18,19]
附加为axis=0
为空。
我已经通过非多进程完成了这项工作,但是速度很慢。我想问一下如何通过多进程来做到这一点。我有两种幼稚的方法,但不知道如何实现。
使用游泳池,
制作一个func0
,用于拾取子列表并使用pool.map(func0,[lst for lst in[ list1,list2,list3]]
合并它们
[将func1
附加到空然后再添加listA, listB, listC
的pool.map(func1,[lst for lst in [listA,listB,listC]])
,
使用multiprocessing.Array
但我还没有弄清楚怎么做]]
此示例可能不需要使用多重处理,但是我有数千行的列表。
我有一个空列表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()
我不确定这是否有帮助,但是您可以避免一些列表理解:
empty_list=[]
for l1,l2 in zip(list1,list2):
empty_list.append(l1+l2)
您可以使用dask
并行执行numpy操作:
import dask.array as da
list1 = da.from_array(list1)
list2 = da.from_array(list2)
result = da.hstack([list1,list2])
result.compute()