精神残废 2022-04-01 20:44 采纳率: 70.8%
浏览 143
已结题

多协成队列Cannot choose from an empty sequence

img


部分代码如下


def job():
    global read_count, work, log,ip_list
    read_count = ReadCount('data/教师账号.xlsx')
    read_count.run()
    log = Log('data/报错日志.xlsx')
    get_ip = IP(
        'http://http.tiqu.letecs.com/getip3?num=20&type=1&pro=&city=0&yys=0&port=11&time=1&ts=0&ys=0&cs=0&lb=1&sb=0&pb=4&mr=1&regions=&gm=4')
    get_ip.run()
    ip_list=get_ip.ip_list
    work = Queue()
    for i in read_count.count:
        work.put_nowait(read_count.count[i])
    tasks = []
    for i in range(2):
        task = gevent.spawn(crawler)
        tasks.append(task)
    gevent.joinall(tasks)

    log.quit()
    read_count.quit()
    print('执行一次')


def crawler():
    while not work.empty():
        for i in range(3):
            item = work.get(block=True,timeout=1)
            print(work.qsize())
            time.sleep(1)
  • 写回答

1条回答 默认 最新

  • CSDN专家-黄老师 2022-04-01 22:32
    关注

    work.get(block=True,timeout=1)是循环了三次,如果你的队列只有一个数据,第二次循环的时候,队列就空,所以报错了,改成这样试试:

    def crawler():
        while not work.empty():
            for i in range(3):
                if not work.empty():
                    item = work.get(block=True,timeout=1)
                    print(work.qsize())
                    time.sleep(1)
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月2日
  • 创建了问题 4月1日