Ссылка
Это проект кода, над которым я работал. Я создавал область диаграммы для сортировки каждой вкладки, но это не сработало.
Интересно, есть ли проблемы с этой функцией:
def run_sorting_algorithm(selected_algo, data, chart_area, thread_id):
global pause_event, stop_event
print(f"Running {selected_algo} on Tab {thread_id}")
# start_time = time.time()
sort_algorithms = {
"Merge Sort": lambda: merge_sort(data, 0, len(data) - 1, chart_area),
"Quick Sort": lambda: quick_sort(data, 0, len(data) - 1, chart_area),
"Selection Sort": lambda: selection_sort(data, chart_area),
"Bubble Sort": lambda: bubble_sort(data, chart_area),
"Insertion Sort": lambda: insert_sort(data, chart_area),
}
try:
while pause_event.is_set:
time.sleep(0.1)
if not stop_event.is_set():
sort_algorithms[selected_algo]()
except Exception as e:
print(f"Error in thread {thread_id}: {e}")
def start_all_tabs_sorting():
pause_event.clear()
stop_event.clear()
global threads
threads = []
if not data:
status_label.config(text="No Data to Sort!", fg="red")
return
algorithms = [
(algo_dropdown1.get(), data.copy(), chart_area_tab1),
]
for idx, (algo, data_copy, chart_area) in enumerate(algorithms):
thread = threading.Thread(
target=run_sorting_algorithm,
args=(algo, data_copy, chart_area, idx + 1),
)
threads.append(thread)
thread.start()
win.after(100, check_threads_complete)
def check_threads_complete():
global threads
if any(thread.is_alive() for thread in threads):
win.after(100, check_threads_complete)
else:
print("All sorting threads have completed.")
status_label.config(text="All sorting threads completed!", fg="blue")
def start_sorting():
global data
try:
manual_data = list(map(int, manual_entry.get().split(",")))
if manual_data:
data = manual_data
except ValueError:
status_label.config(
text="Invalid Manual Input! Please enter comma-separated integers.",
fg="red",
)
return
if not data:
status_label.config(
text="No Data to Sort! Please generate or input data.", fg="red"
)
return
status_label.config(text="Sorting started...", fg="green")
Я пытался реализовать в проекте многопоточность, и это превратилось в неполный беспорядок с кодом. Я пытался восстановить и исправить код, но он все равно не работал. Пожалуйста, помогите мне найти ошибку/ошибку.
Ссылка Это проект кода, над которым я работал. Я создавал область диаграммы для сортировки каждой вкладки, но это не сработало. Интересно, есть ли проблемы с этой функцией: [code]def run_sorting_algorithm(selected_algo, data, chart_area, thread_id): global pause_event, stop_event
try: while pause_event.is_set: time.sleep(0.1) if not stop_event.is_set(): sort_algorithms[selected_algo]() except Exception as e: print(f"Error in thread {thread_id}: {e}")
def start_all_tabs_sorting(): pause_event.clear() stop_event.clear() global threads threads = []
if not data: status_label.config(text="No Data to Sort!", fg="red") return
def check_threads_complete(): global threads if any(thread.is_alive() for thread in threads): win.after(100, check_threads_complete) else: print("All sorting threads have completed.") status_label.config(text="All sorting threads completed!", fg="blue")
def start_sorting(): global data
try: manual_data = list(map(int, manual_entry.get().split(","))) if manual_data: data = manual_data except ValueError: status_label.config( text="Invalid Manual Input! Please enter comma-separated integers.", fg="red", ) return
if not data: status_label.config( text="No Data to Sort! Please generate or input data.", fg="red" ) return
[/code] Я пытался реализовать в проекте многопоточность, и это превратилось в неполный беспорядок с кодом. Я пытался восстановить и исправить код, но он все равно не работал. Пожалуйста, помогите мне найти ошибку/ошибку.