&引用;“名称未定义”;用Python

&引用;“名称未定义”;用Python,python,Python,我是编程新手,我有一个问题。当我运行代码时,它会给出一个错误: 文件“main.py”,第29行,在 class workers:

我是编程新手,我有一个问题。当我运行代码时,它会给出一个错误:

文件“main.py”,第29行,在

     class workers:                                                                                                                                                                                                                              
  File "main.py", line 30, in workers                                                                                                                                                                                                           
    workers = deque()                                                                                                                                                                                                                           
 NameError: name 'deque' is not defined
这个程序为tcp/udp生成一个事件流,但要求声明“deque()”,但我不知道怎么做。Python代码:

    def udp_worker(port):
        start = time.time()
        sock = socket.socket(socket.AF_INET,
                socket.SOCK_DGRAM)
        print('Begin sendding data to port %d' % port)
        retval = 0
        for i in range(0, MSG_AMOUNT):
            retval += sock.sendto(MESSAGE_BASE % (i, port, randrange(100)), (UDP_IP, port))
        print('Total amount of data sent %d in time %s' % (retval, str(time.time() - start)))
    
    def tcp_worker(port):
        start = time.time()
        sock = socket.socket(socket.AF_INET,
                socket.SOCK_STREAM)
        sock.connect((UDP_IP, UDP_BASE_PORT))
        print('Begin sendding data to port %d' % port)
        for i in range(0, MSG_AMOUNT):
            sock.sendall(MESSAGE_BASE % (i, port, randrange(100)) )
            #data = sock.recv(1024)
        sock.close()
        print('Total in time %s' % str(time.time() - start))
    
    if __name__ == '__main__':
        import sys
        if len(sys.argv) > 1:
            MSG_AMOUNT = int(sys.argv[1])
        if len(sys.argv) > 2:
            PROCESS = int(sys.argv[2])
    
        workers = deque()
        for i in range(0, PROCESS):
            port = UDP_BASE_PORT
            #t = threading.Thread(target = udp_worker, args = [port])   # comments this for testing tcp only
            t = threading.Thread(target = tcp_worker, args = [port])
            t.start()
            print("%s start" % t)
            workers.append(t)
        for w in workers:
            print("%s wait for join" % w)
            w.join() 

请帮助解决此问题。

如果deque是python中的双端队列,则需要导入它:

from collections import deque

如果按照建议正确导入,则可以将其添加到导入系统下方

显然,您必须在
deque()
中输入一些内容,例如数组或其他内容。请参阅附件:

相同错误仅适用于“范围内的i(0,进程)”