基于python多处理模块的线性搜索并行编程

基于python多处理模块的线性搜索并行编程,python,parallel-processing,multiprocessing,Python,Parallel Processing,Multiprocessing,我想写一个代码来比较单处理线性搜索和并行线性搜索之间的速度差异。我有一个包含10000个元素的整数数组,用于线性搜索。 我想通过将一个进程分配给前1000个元素,并将包含10000个元素的数组划分为10个进程来查看差异 例如: 0-1000索引-->进程1 1001-2000索引-->进程2 2001-3000索引-->过程3 我写了一个示例代码,但是有逻辑错误,我无法运行它。我在等待你的建议,提前非常感谢 import time import array import multiprocess

我想写一个代码来比较单处理线性搜索和并行线性搜索之间的速度差异。我有一个包含10000个元素的整数数组,用于线性搜索。 我想通过将一个进程分配给前1000个元素,并将包含10000个元素的数组划分为10个进程来查看差异

例如:

0-1000索引-->进程1

1001-2000索引-->进程2

2001-3000索引-->过程3

我写了一个示例代码,但是有逻辑错误,我无法运行它。我在等待你的建议,提前非常感谢

import time
import array
import multiprocessing


def linear_search(arr, n, x): 

    START_TIME = time.perf_counter()

    for i in range(0, n):
        #print(f"{i}") 
        if (arr[i] == x): 
            STOP_TIME = time.perf_counter()
            FINISH_TIME = STOP_TIME - START_TIME
            return i, FINISH_TIME     
    return -1

def linear_parallel_search(arr, n, x):

    process_list = []

    for _ , n in enumerate(range(10),range(1,10000,1000)):
        p = multiprocessing.Process(target=linear_search, args=[arr, n, x])
        p.start()
        process_list.append(p)

    for process in process_list:
        process.join()

def main(): 

    x = 979900
    n = len(array.ARRAY) 
  
    #Single process Function call 
    result, finish_time = linear_search(array.ARRAY, n, x) 
    if(result == -1): 
        print("Element is not present in array") 
    else: 
        print("Element is present at index", result) 

    print(f"finished time :{finish_time} seconds")

    #Parallel function call
    result_parallel, finish_parallel_time = linear_parallel_search(array.ARRAY, n, x)
    if(result_parallel == -1): 
        print("Element is not present in array") 
    else: 
        print("Element is present at index", result_parallel) 
        print(f"finished time :{finish_parallel_time} seconds")

if __name__ == "__main__":
    main()