Python如何同时运行两个循环?

2024-09-30 16:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

所以简单地说,我希望不同的对象有自己的滴答循环代码独立运行(因为在一个滴答循环中并不能停止我应用程序中所有其他的滴答循环)。在

我已经创建了一个基本模块,它有一个用于形状的类和用于生成它们的主体,但是类的tick循环支持main parts循环。在

我甚至尝试过将代码分成两个模块,看看是否可以工作,但这两个循环仍然是分开运行的。在

这是我的代码:

(主代码)

from random import *
from tkinter import *
from time import *

import RdmCirClass

size = 500
window = Tk()
count = 0
d = 0
shapes = []

canv = Canvas(window, width=size, height=size)
canv.pack()
window.update()
while True:
    col = choice(['#EAEA00'])
    x0 = randint(0, size)
    y0 = randint(0, size)
    #d = randint(0, size/5)
    d = (d + 0.01)
    outline = 'white'
    shapes.append(1)
    shapes[count] = RdmCirClass.Shape("shape" + str(count), canv, col, x0, y0, d, outline)
    shapes[count].spawn()
    count = count+1

    print("Circle Count: ",count)
    window.update()

(形状等级)

^{pr2}$

Tags: 模块代码fromimportsizecountupdatecol
2条回答

粗略地说,有三种方法可以实现你想要的。哪一个是最好的很大程度上取决于您要对每个独立单元做什么,以及您有哪些性能约束和需求。在

第一个解决方案是有一个独立的循环,在每次迭代中简单地调用每个对象的tick()方法。从概念上讲,这可能是最简单的实现方法。在

另外两个解决方案涉及多个线程或多个进程。这些解决方案有时具有相当大的复杂性,但好处是可以让操作系统为每个对象安排tick()方法的运行。在

我不明白您的代码在做什么,但我的建议是使用线程:https://pymotw.com/2/threading/

相关问题 更多 >