小明上课时打瞌睡,被老师发现,老师惩罚他抄写100遍单词"HelloWorld",而且老师每发现一个同学,惩罚的次数和抄写的内容都不一样。恰好今天学习多线程,于是乎小明就找到了小王帮助他一起抄写单词。 请使用多线程模拟小明和小王一起完成抄单词的惩罚。 程序运行效果如下图:不要求轮流写,不要求平均分配抄写次数
时间: 2024-01-22 17:19:52 浏览: 125
下面是使用Python编写的多线程模拟小明和小王一起完成抄单词的惩罚的程序:
```python
import threading
class Punishment:
def __init__(self, student_name, content, times):
self.student_name = student_name
self.content = content
self.times = times
def copy_words(punishment):
for i in range(punishment.times):
print(punishment.student_name + "抄写:" + punishment.content)
punishments = [Punishment("小明", "HelloWorld", 100), Punishment("小王", "Python", 50)]
threads = []
for punishment in punishments:
thread = threading.Thread(target=copy_words, args=(punishment,))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
print("全部抄写完成!")
```
程序首先定义了一个Punishment类,表示惩罚的信息,包括学生姓名、抄写内容和次数。然后创建了两个惩罚实例,分别是小明和小王的惩罚信息。
接着,程序创建了一个空的线程列表threads,然后遍历惩罚列表punishments,为每个惩罚创建一个线程,并将其添加到线程列表中。创建线程时,需要指定线程要执行的函数,这里是copy_words函数,同时也需要将对应的惩罚实例作为参数传递给该函数。最后启动线程并将其添加到线程列表中。
程序接着使用join()方法等待所有线程执行完毕,然后输出"全部抄写完成!"。
运行该程序,就会看到小明和小王一起抄写单词的惩罚过程。
阅读全文