You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用multiprocessing并行线性搜索性能不升反降的原因咨询

多进程线性搜索比单进程更慢的原因

我尝试用Python的multiprocessing模块并行化线性搜索,创建两个进程后,运行耗时反而比单进程更长。测试代码如下:

import multiprocessing
import math
import numpy as np
import os
import time
import random
from time import sleep, time
#from threading import Thread

def linearsearch(arr,search_var):
  count=0
  index_list=[]

  for i in range(len(arr)):
    if arr[i]==search_var:
      count+=1
      index_list.append(i)

def linearsearch_p1(arr,search_var):
  count=0
  index_list=[]

  for i in range(0,round(len(arr)/2)):
    if arr[i]==search_var:
      count+=1
      index_list.append(i)
        
def linearsearch_p2(arr,search_var):
  count=0
  index_list=[]

  for i in range(round(len(arr)/2),len(arr)):
    if arr[i]==search_var:
      count+=1
      index_list.append(i)

number_to_search=5

input_array=[random.randint(1,10) for i in range(10000)]
array_len=len(input_array)
start=time()

linearsearch(input_array,number_to_search) 

finish=time()

print(f'Time taken by Single Process Linear Search {finish-start: .2f} second(s) to finish')

start_time = time()

t1 = multiprocessing.Process(target=linearsearch_p1, args=(input_array,number_to_search))
t2 = multiprocessing.Process(target=linearsearch_p2, args=(input_array,number_to_search))

t1.start()
t2.start()

t1.join()
t2.join()

end_time = time()

print(f'It took {end_time- start_time: 0.2f} second(s) to complete.')

运行输出:

Time taken by Single Process Linear Search 0.00 second(s) to finish.
It took 0.17 second(s) to complete.

多进程耗时远高于单进程的原因如下:

  • 进程创建与数据拷贝开销:Python多进程创建时,会复制父进程的内存空间(包括input_array),这个拷贝过程本身需要消耗时间。而你的线性搜索任务非常轻量,进程创建、启动的额外开销完全超过了并行搜索节省的时间。
  • 任务粒度太小:10000个元素的线性搜索单进程执行快到计时显示0.00秒,说明任务耗时极短。并行化这种轻量任务,根本体现不出并行的优势,反而被额外开销拖慢。只有当任务足够繁重,并行处理节省的时间远大于进程开销时,多进程才有意义。
  • 计时精度限制:单进程的0.00秒是time()函数的精度问题导致的,实际耗时可能在0.001~0.005秒之间,但被四舍五入显示为0.00。而多进程的计时包含了从创建到结束的全部流程,所以真实时间差距虽没有显示的夸张,但多进程确实更慢。

内容的提问来源于stack exchange,提问作者Vivek Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:09:12