Найти - Пользователи
Полная версия: Параллельное выполнение нескольких функций
Начало » Python для новичков » Параллельное выполнение нескольких функций
1
Konstantin1984+
Очень интересует вопрос параллельного исполнения нескольких функций, вот простой пример программы: из танка вылетают снаряды, каждый последующий останавливает движение предыдущего, пока последующий не пролетит, предыдущий не может продолжить свое движение. Прошу пояснить, как запараллелить процессы, чтобы не было видимых пауз.
Код ниже.

 from tkinter import *
from time import sleep
root=Tk()
c = Canvas(width=460,height=460,bg='grey80')
c.pack()
x=10
y=10
predmet1=c.create_rectangle(x,y,x+100,y+40,tag='tank',fill="gray")
oval=c.create_oval(x+45,y+10,x+75,y+30,tag='tank')
predmet2=c.create_rectangle(x+75,y+17,x+110,y+23,tag='tank',fill="gray")
def funk(event):
    predmet4=c.create_rectangle(x+110,y+17,x+117,y+23,fill="gray80",outline="gray80")
    while True:
          c.itemconfig(predmet4,fill="black")    
          c.move(predmet4,5,0)
          c.update()
          sleep(0.02)
c.focus_set()
c.bind('<Button-1>',funk)
root.mainloop()
py.user.next
Konstantin1984+
Прошу пояснить, как запараллелить процессы, чтобы не было видимых пауз.
В питоне есть модуль threading. Но разобраться в этой теме будет не так просто. Надо прочитать несколько толстых книжек.

Просто представь, что этот модуль - это шприц. В принципе, как набирать воду в шприц, ты можешь понять, и можешь даже понять, как взять эту воду из ампулы. А дальше? А как вылечить собаку? которой не хватает витаминов группы B? Шприц-то надо знать, но одного знания шприца для этого не хватит. Вот так же дело обстоит и с многопоточностью в программировании. Если ты базу не знаешь, модули тебя не спасут.
rami
Всё намного проще — нужно использовать tag:
 def funk(event):
#     predmet4=c.create_rectangle(x+110,y+17,x+117,y+23,fill="gray80",outline="gray80")
    predmet4=c.create_rectangle(x+110,y+17,x+117,y+23, tag='shell', fill="gray80",outline="gray80")  # добавить tag
    while True:
        c.itemconfig(predmet4, fill="black")
#         c.move(predmet4, 5, 0)
        c.move("shell", 5, 0)       # использовать tag
        c.update()
        sleep(0.02)
Konstantin1984+
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB