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 秒。