线程核酸检测代码——我根救我命

import threading
import time
import queue
import pandas as pd
reader = pd.read_csv("name.csv",header=None)
import numpy as np
reader = np.array(reader)
customer = [row[0] for row in reader]
machineNUM = 3  #三台扫码机
linenum=5
semaphore = threading.Semaphore(machineNUM) #创建扫码机信号量
signal1 = 0 #判断人员是否分配完毕
time_start=time.clock()
A=[queue.Queue() for i in range(linenum)]
B=[queue.Queue() for i in range(linenum)]
J=[[0] for i in range(linenum)]#扫码
thread_num = linenum*2+1
threads = []

#人员分配点
def Group(A):
    global signal1

    for i in range(0,20,linenum):
        for m in range(linenum):
            for j in range(10):
                if(10*(m+i)+j<200):
                    A[m].put(customer[10*(m+i)+j])
                    time.sleep(0.1)
                    if(10*(m+i)+j==199):
                        signal1 = 1

thread = threading.Thread(target=Group,args=(A,))
threads.append(thread)
  
#扫二维码
def QR(A,B,J):
    while(True):
        while(A.qsize()>=10):
            semaphore.acquire()
            time.sleep(0.8) 
            for i in range(10):
                B.put(A.get())
                time.sleep(0.3)
            semaphore.release()
            time.sleep(0.8)
        if(A.qsize()<10 and signal1==1):
            if(A.empty()):
                J[0]=1
                break
            else:
                time.sleep(0.8)
                semaphore.acquire()
                for i in range(A.qsize()):
                    B.put(A.get())
                    time.sleep(0.3)
                semaphore.release()
                time.sleep(0.8)
                J[0]=1
                break
        else:
            time.sleep(0.000001)
            continue
            
#核酸检测点
def HScheck(B,J):
    n=0
    while(True):
        while not B.empty():
            n=n+1
            time.sleep(0.5)
        if (B.empty() and J[0]==1):
            print(n)
            break  
        if (B.empty() and J[0]==0):
            time.sleep(0.000001)  
            continue
#队伍,线程创建
for i in range(linenum):
    threads.append(threading.Thread(target=QR,args=(A[i],B[i],J[i])))
for i in range(linenum):
    threads.append(threading.Thread(target=HScheck,args=(B[i],J[i])))
for i in range(thread_num):
    threads[i].start() 
for i in range(thread_num):
    threads[i].join()
time_end=time.clock()
print(time_end-time_start)



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值