制作网站工具,网络公司注册条件,石家庄城乡建设网站,北京微网站设计制作服务有一家店铺里有4个销售和2个搬运工#xff0c;销售负责卖货#xff0c;搬运工负责从仓库搬货物#xff0c;已知该店铺的存货有size#xff0c;当销售或搬运工做完所有商品数量后#xff0c;他们各自就可以下班。销售可以同时卖货#xff0c;但只能按照货架顺序每次卖出一…有一家店铺里有4个销售和2个搬运工销售负责卖货搬运工负责从仓库搬货物已知该店铺的存货有size当销售或搬运工做完所有商品数量后他们各自就可以下班。销售可以同时卖货但只能按照货架顺序每次卖出一件搬运工一次可以搬满货架货架容量为5个货物。当货架商品销售完后搬运工会去仓库搬运货物进行补货销售此时进行小憩当货架补满后销售开始销售商品搬运工进行休息。
本题要求实现搬运工Porter类和销售Seller类他们都是线程类。
提示本题需要使用Condition类来保证销售不会乱卖商品保证搬运工不会在商品未销售完时搬运货物。
裁判测试程序样例
from threading import Thread, Condition# ***************# 你编写的类将放在这# ***************size int(input())
Porter.size Seller.size size
condi Condition()
shelves []for _ in range(2):Porter().start()for _ in range(4):Seller().start()输入样例
在这里给出一组输入。例如
20输出样例
在这里给出相应的输出。例如
已生产商品 1 2 3 4 5
已销售商品 1
已销售商品 2
已销售商品 3
已销售商品 4
已销售商品 5
已生产商品 1 2 3 4 5
已销售商品 1
已销售商品 2
已销售商品 3
已销售商品 4
已销售商品 5
已生产商品 1 2 3 4 5
已销售商品 1
已销售商品 2
已销售商品 3
已销售商品 4
已销售商品 5
已生产商品 1 2 3 4 5
已销售商品 1
已销售商品 2
已销售商品 3
已销售商品 4
已销售商品 5
class Porter(Thread):def run(self):global shelvescondi.acquire()while Porter.size 0:if len(shelves) 5:condi.notify()condi.wait()else:if len(shelves) 0:print(已生产商品,end)shelves.append(6)Porter.size - 1if len(shelves) 5 or Porter.size 0:print(f {len(shelves)})else:print(f {len(shelves)},end )condi.notify()condi.release()class Seller(Thread):def run(self):global shelves,tps,nwith condi:while len(shelves) 0 or Seller.size 0:if len(shelves) 0:condi.notify()condi.wait()else:del shelves[0]Seller.size - 1if Seller.size len(shelves) and n 0:tps len(shelves) 1n 1print(f已销售商品 {tps - len(shelves)},end )if Seller.size 0:print()tps 5
n 0