私は、Wifiを搭載したRaspberry PI 2の異なるポートで、TCPとUDPを使用してかなり簡単なメッセージサーバーを設定しています。マルチキャストにUDPを使用しています。サーバーは正常に動作します。問題は、サーバーを実行するときにプロセッサーが約30%のプロセッサー使用率にジャンプすることです(TCPおよびUDPリスナー)。これは何も処理しておらず、ただ聞いているだけです。 UDPをシャットダウンすると、約3〜5%になります。これは正常ですか(それはRPiです)、何か間違っていますか?Python udpの性能
class UDPServer(asyncore.dispatcher):
def __init__(self):
asyncore.dispatcher.__init__(self)
multicast_group = '224.3.29.71'
server_address = ('', 8081)
# Create the socket
self.create_socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind to the server address
self.bind(server_address)
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
self.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
print("UDP listening on {}:{}".format(multicast_group,8081))
'server_address =( ''、8081)'それは悪い考えです!あなたはWiFi上で働いていますが、すべてのインターフェイスで動作しますが、すべてのネットワークに遅延がありますが、すばやくスキャンするのはなぜですか? – dsgdfg
無関係:ドキュメントでは、 'asyncore'ではなく' asyncio'を使うべきだと言います。 – jfs
私は特定のアドレスを使用するバージョンを持っていますが、実際にはクラウドサーバーのセットでこれを使用するつもりであり、怠け者です:)。私は実際にこれを使用するときにそれを修正しますが、チェックしてもパフォーマンスには影響しません。スキャン速度までは、asynccoreのループ関数を使用しています - それはあなたが参照しているものですか?私はasyncioをチェックアウトします。 –