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

本题要求实现一个机器人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)))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值