10-1 HNCST - 多线程3 - 线程同步Lock——python

发布时间:2023年12月31日

本题要求实现一个机器人Robot类,该类为一个线程类,他能够从货物列表goods中取出货物,并输出。现有一批货物,容量为size,工厂配备了m个机器人(线程)不停地进行搬运,直到货物搬完,要求货物要按顺序码放,不得错乱。

提示:需要用到Lock锁保证货物顺序

裁判测试程序样例:

from threading import Thread, Lock

# ***************

# 你编写的类将放在这

# ***************

size, m = map(int, input().split())
lock = Lock()

# 生成货物 0 - (size-1)
goods = list(range(size))

# m个机器人同时搬运
for i in range(m):
    Robot().start()

输入样例:

在这里给出一组输入。例如:

10 3

输出样例:

在这里给出相应的输出。例如:

Robot已搬运:货物0
Robot已搬运:货物1
Robot已搬运:货物2
Robot已搬运:货物3
Robot已搬运:货物4
Robot已搬运:货物5
Robot已搬运:货物6
Robot已搬运:货物7
Robot已搬运:货物8
Robot已搬运:货物9
class Robot(Thread):
    def __init__(self):
        Thread.__init__(self)

    def run(self):
        global goods, size, lock
        while len(goods)>0:
            with lock:
                if len(goods)>0:
                    print("Robot已搬运:货物{}".format(goods.pop(0)))

?

文章来源:https://blog.csdn.net/qq_64037242/article/details/135319639
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。