Skip to content

Commit d9bb2d9

Browse files
Add files via upload
1 parent 772181f commit d9bb2d9

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

Multithreading/Threading.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import threading
2+
import queue
3+
import turtle
4+
5+
# Create the queue for shapes
6+
shape_queue = queue.Queue()
7+
8+
def create_turtle():
9+
return turtle.Turtle()
10+
11+
def draw_rectangle():
12+
turtle = create_turtle()
13+
turtle.color("purple")
14+
turtle.penup()
15+
turtle.goto(-100, 0)
16+
turtle.pendown()
17+
turtle.begin_fill()
18+
for i in range(4):
19+
turtle.forward(100)
20+
turtle.left(90)
21+
turtle.end_fill()
22+
23+
def draw_circle():
24+
turtle = create_turtle()
25+
turtle.color("pink")
26+
turtle.penup()
27+
turtle.goto(100, 0)
28+
turtle.pendown()
29+
turtle.begin_fill()
30+
turtle.circle(50)
31+
turtle.end_fill()
32+
33+
def worker():
34+
while True:
35+
shape, *args = shape_queue.get()
36+
if shape == 'rectangle':
37+
draw_rectangle(*args)
38+
elif shape == 'circle':
39+
draw_circle(*args)
40+
shape_queue.task_done()
41+
42+
# Start the worker thread
43+
thread = threading.Thread(target=worker, daemon=True)
44+
thread.start()
45+
46+
# Queue up the shapes
47+
shape_queue.put(('rectangle',))
48+
shape_queue.put(('circle',))
49+
50+
# Wait for the shapes to be drawn
51+
shape_queue.join()
52+
53+
# Exit the program
54+
turtle.done()

0 commit comments

Comments
 (0)