2024-10-02 12:26:00 发布
网友
我一直在尝试做排序可视化。我已经做了3个气泡的可视化,快速和合并排序。当我运行这些排序时,会一个接一个地进行。如何一次运行这三个函数,以便比较这三个函数
这是我做的一般形式
def OnClick(): BubbleSort(parameters) QuickSort(parameters) MeregeSort(parameters)
我希望这三个函数同时运行
您可以使用multiprocessing使用import multiprocessing或import concurrent.futures
multiprocessing
import multiprocessing
import concurrent.futures
https://docs.python.org/3/library/multiprocessing.html , Docs for multiprocessinghttps://docs.python.org/3/library/concurrent.futures.html , Docs for concurrent.futures
concurrent.futures
您可以为每个算法实现一个步骤函数,只需在循环中运行,并为每个算法一次可视化一个步骤。 如果需要,请考虑在状态对象中维护算法的状态。
我可以提供一个相当简单的实现: 让我们以boublesort为例。 创建一个BoublesortVisualizer对象,并定义一个step函数,该函数通过在算法前进一步的过程中从某个步骤运行boublesort来实现(比如说,每个循环)。 为了了解您所处的步骤,请在类中维护一些状态。 对其他排序算法执行相同的操作
现在,在OnClick函数中运行一个循环,该循环为每个排序函数调用step函数
您可以尝试在单独的线程中运行这三个函数:
import threading def OnClick(): for func in (BubbleSort, QuickSort, MergeSort): threading.Thread(target=func, args=(parameters,), daemon=True).start()
您可以使用
multiprocessing
使用import multiprocessing
或import concurrent.futures
您可以为每个算法实现一个步骤函数,只需在循环中运行,并为每个算法一次可视化一个步骤。 如果需要,请考虑在状态对象中维护算法的状态。
编辑
我可以提供一个相当简单的实现: 让我们以boublesort为例。 创建一个BoublesortVisualizer对象,并定义一个step函数,该函数通过在算法前进一步的过程中从某个步骤运行boublesort来实现(比如说,每个循环)。 为了了解您所处的步骤,请在类中维护一些状态。 对其他排序算法执行相同的操作
现在,在OnClick函数中运行一个循环,该循环为每个排序函数调用step函数
您可以尝试在单独的线程中运行这三个函数:
相关问题 更多 >
编程相关推荐