Python 中每秒增加的消息
Increment message per second in Python
我已经用头撞墙20分钟了,答案很简单,我就是想不出解决这个问题的方法。
我有一个客户端和一个服务器,我希望客户端每秒向服务器发送 10 条消息。
现在这工作正常,但增量没有。
我想要它:
消息1、消息2、消息3.....消息16、消息17
等等,直到我关闭连接。
但它在 10 处停止,然后循环回到消息 1、消息 2 等等。
我的代码:
def send_packages():
print('Sending ' + packages_per_second + ' packages per second')
while True:
if int(packages_per_second) > int(max_packages_per_second):
print('The server cannot handle more than 25 packages per second')
break
elif int(packages_per_second) < 1:
print('Please check config file and make sure the "max_packages" is larger than 0')
break
else:
for i in range(int(packages_per_second)):
message = 'Message #' + str(i)
sock.sendto(message.encode('utf-8'), server_address)
sleep(1)
您没有限制消息实际发送的速度;您只是在消息批次之间暂停了一秒钟。要准确地限制您的速率,您需要知道发送一条消息实际需要多长时间,然后足够长的时间使包裹数量加上单独的睡眠时间加起来等于一秒。为了简单起见(并考虑到您的低包裹率),我们假设消息是即时发送的。然后你会想要一个像
这样的循环
from itertools import count
def send_packages():
print(f"Sending {packages_per_second} packages per second")
delay = 1 / packages_per_second
for i in count():
message = f'Message #{i}'
sock.sendto(message.encode(), server_address)
sleep(delay)
如果 package_per_second
为 10,您将在 每 条消息之间休眠 0.1 秒。
我已经用头撞墙20分钟了,答案很简单,我就是想不出解决这个问题的方法。
我有一个客户端和一个服务器,我希望客户端每秒向服务器发送 10 条消息。 现在这工作正常,但增量没有。 我想要它:
消息1、消息2、消息3.....消息16、消息17
等等,直到我关闭连接。 但它在 10 处停止,然后循环回到消息 1、消息 2 等等。
我的代码:
def send_packages():
print('Sending ' + packages_per_second + ' packages per second')
while True:
if int(packages_per_second) > int(max_packages_per_second):
print('The server cannot handle more than 25 packages per second')
break
elif int(packages_per_second) < 1:
print('Please check config file and make sure the "max_packages" is larger than 0')
break
else:
for i in range(int(packages_per_second)):
message = 'Message #' + str(i)
sock.sendto(message.encode('utf-8'), server_address)
sleep(1)
您没有限制消息实际发送的速度;您只是在消息批次之间暂停了一秒钟。要准确地限制您的速率,您需要知道发送一条消息实际需要多长时间,然后足够长的时间使包裹数量加上单独的睡眠时间加起来等于一秒。为了简单起见(并考虑到您的低包裹率),我们假设消息是即时发送的。然后你会想要一个像
这样的循环from itertools import count
def send_packages():
print(f"Sending {packages_per_second} packages per second")
delay = 1 / packages_per_second
for i in count():
message = f'Message #{i}'
sock.sendto(message.encode(), server_address)
sleep(delay)
如果 package_per_second
为 10,您将在 每 条消息之间休眠 0.1 秒。