Многопроцессорность с индикатором выполнения tkinter, минимальный примерPython

Программы на Python
Ответить
Anonymous
 Многопроцессорность с индикатором выполнения tkinter, минимальный пример

Сообщение Anonymous »

Я ищу способ отслеживать задачу многопроцессорной обработки с помощью индикатора выполнения Tkinter. Это можно сделать очень просто с помощью tqdm для отображения в терминале.
Вместо использования tqdm я бы хотел использовать ttk.Progressbar< /code>, но все попытки, которые я предпринимал, блокируют задачи при попытке обновить индикатор выполнения (например, с помощью update_idletasks и тому подобного). Ниже приведен шаблон решения, которое я ищу:

Код: Выделить всё

import time
from multiprocessing import Pool
from tqdm import tqdm
import tkinter as tk
import tkinter.ttk as ttk

def task(x):
time.sleep(0.1)
return x * x

def start_task():
num_processes = 12
num_tasks = 100

with Pool(processes=num_processes) as pool:
with tqdm(total=num_tasks, desc="Processing") as pbar:
def update_progress(_):
# 
pbar.update(1)

for i in range(num_tasks):
pool.apply_async(task, args=(i,), callback=update_progress)
pool.close()
pool.join()

if __name__ == "__main__":
root = tk.Tk()
root.title("Task Progress")
progress_bar = ttk.Progressbar(root, maximum=100, length=300)
progress_bar.pack(pady=20)
button = tk.Button(text="Start", command=start_task)
button.pack(fill="x", padx=10, pady=10)
root.mainloop()
В решении я также хотел бы получить выходные данные задачи (в данном случае список x*x).
Если другая многопроцессорная структура будет работать лучше, пожалуйста, не стесняйтесь вносить изменения (пул показался самым простым для демонстрации).
Этот вопрос уже задавался при переполнении стека, но все предыдущие ответы Я обнаружил, что примеров не так уж и мало, и они не кажутся мне очень полезными.

Подробнее здесь: https://stackoverflow.com/questions/793 ... al-example
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»