【发布时间】:2022-01-09 18:20:57
【问题描述】:
我正在尝试使用 4 个不同的输入并行执行相同的功能。 它在总输入小于 10^5 时起作用,但当它变大时它开始同时工作。
def subList_process(instance):
print("start")
l = List(dataSet=instance)
l.shuffle_set()
l.sort_set()
print("done")
if __name__ == '__main__':
p=[]
p.append(multiprocessing.Process(target=subList_process,args=(lists[0],)))
p.append(multiprocessing.Process(target=subList_process,args=(lists[1],)))
p.append(multiprocessing.Process(target=subList_process,args=(lists[2],)))
p.append(multiprocessing.Process(target=subList_process,args=(lists[3],)))
for process in p : process.start()
for process in p : process.join()
这是具有两种不同数据大小的输出:
- 10^4
- 10^6
我能否解释一下当数据量相对较大时发生了什么? 我该如何解决?
【问题讨论】:
-
Python 必须将
args复制到子进程,这是按顺序发生的。随着args变得足够大,复制数据所需的时间比排序数据要长。 -
@MisterMiyagi 你知道我该如何解决吗?
-
@mahmoudkassab 生成/读取每个进程内的数据,仅传递例如要读取的文件名