K_DOT
@K_DOT
DevOps инженер

Python. Как реализовать повторное использование программы без перезапуска?

Здравствуйте, написал этот код:
# -*- coding: utf-8 -*-
from Tkinter import *
import urllib, ttk, tkMessageBox
from threading import Thread
from Queue import Queue
queue = Queue()
def func():
    arc1 = c1.get()
    arc2 = c2.get()
    def downloader(url,file):
        urllib.urlretrieve(url, file)
        queue.put(True)

    if arc1 == 1:
        downloader('http://cs1632v4.vk.me/u222124/audios/88970df3fe1f.mp3','file1.mp3')
    if arc2 == 1:
        downloader('http://cs536301v4.vk.me/u131194151/audios/bc2867aeb217.mp3','file2.mp3')

th = Thread(target=func, args=())
def starter(event):
    th.start()
    pb.pack()
    pb.start()
root = Tk()
def task():
    try:
        q = queue.get_nowait()
    except:
        q = False
    if q:
        tkMessageBox.showinfo('Done')
    root.after(1000, task)
root.after(1000, task)
c1 = IntVar()
c2 = IntVar()
chk1 = Checkbutton(root, text = '1', onvalue = 1, offvalue = 0, variable = c1)
chk2 = Checkbutton(root, text = '2', onvalue = 1, offvalue = 0, variable = c2)
pb = ttk.Progressbar(length=200, orient='horizontal', mode='indeterminate')
but = Button(root, text = 'Go!')
root.minsize(width=400, height=350)
but.bind('<Button-1>', starter)
but.pack()
chk1.pack()
chk2.pack()
root.mainloop()

Этот код работает, но дело в том, что требуется чтобы можно было использовать программу повторно(например после загрузки первого файла скачать второй). Сейчас это невозможно из-за того что потоки можно использовать только один раз. Как решить эту проблему?
  • Вопрос задан
  • 5375 просмотров
Решения вопроса 1
maxaon
@maxaon
Посмотрите в сторону multiprocessing.Pool
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы