Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 4, 2024 11:57:13

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

Параллельное выполнение нескольких функций

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

 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()

Офлайн

#2 Ноя. 4, 2024 21:56:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9842
Репутация: +  853  -
Профиль   Отправить e-mail  

Параллельное выполнение нескольких функций

Konstantin1984+
Прошу пояснить, как запараллелить процессы, чтобы не было видимых пауз.
В питоне есть модуль threading. Но разобраться в этой теме будет не так просто. Надо прочитать несколько толстых книжек.

Просто представь, что этот модуль - это шприц. В принципе, как набирать воду в шприц, ты можешь понять, и можешь даже понять, как взять эту воду из ампулы. А дальше? А как вылечить собаку? которой не хватает витаминов группы B? Шприц-то надо знать, но одного знания шприца для этого не хватит. Вот так же дело обстоит и с многопоточностью в программировании. Если ты базу не знаешь, модули тебя не спасут.



Отредактировано py.user.next (Ноя. 5, 2024 03:10:03)

Офлайн

#3 Ноя. 5, 2024 12:00:47

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Параллельное выполнение нескольких функций

Всё намного проще — нужно использовать 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)

Офлайн

#4 Ноя. 10, 2024 16:44:21

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

Параллельное выполнение нескольких функций

Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version