【发布时间】:2023-01-13 01:53:46
【问题描述】:
我目前正在尝试制作一个 sierpinski 三角形,它使用递归函数来创建使用 turtle 库(无法更改)同时绘制单个三角形的线程。问题是它一直告诉我RuntimeError: main thread is not in main loop。
这是我用于线程创建和执行的代码,以及我修复它的一些尝试
def triangle_thread(x, y, size, invert=False):
global turtles
turtles.append(turtle.Turtle("turtle"))
turtles[-1].speed("fastest")
t = threading.Thread(target=partial(triangle, x, y, size, turtles[-1], invert=invert))
t.daemon = True
t.start()
这应该创建并启动一个绘制三角形的新线程 它显然有效。
我尝试了多种方法,以及一些队列技巧,但它不会同时绘制它们。
这是我最近修复它的尝试:
thread_sierpinski_recursive = threading.Thread(target=partial(sierpinski, -700, -500, 3, 1000))
thread_sierpinski_recursive.start()
turtle.mainloop()
我试图在一个单独的线程中运行整个 sierpinski 三角形生成,这样主线程就会运行turtle.mainloop
这适用于最多 4 代的 sierpinski,但是一旦您尝试更多,它就会返回相同的错误:
sierpinski(-700, -500, 3, 1000)
turtle.mainloop()
【问题讨论】:
标签: python multithreading python-turtle