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