#python
#python
Вопрос:
Я новичок в программировании, и у меня проблема. Когда я запускаю код, он выдает ошибку:
Файл «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()
Помогите, пожалуйста, с проблемой.
Ответ №1:
Если deque — это очередь с двойным завершением из python, вам необходимо ее импортировать:
from collections import deque
Вы можете добавить его ниже import sys
Комментарии:
1. та же ошибка только для «для i в диапазоне (0, ПРОЦЕСС)»
Ответ №2:
Если вы импортировали его правильно, как предложено,
По-видимому, вам нужно ввести некоторый контент deque()
, например, массив или что-то в этом роде. пожалуйста, смотрите здесь прилагается: