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