From: Cody Maloney Date: Thu, 30 Jan 2025 22:24:52 +0000 (-0800) Subject: gh-129205: Update multiprocessing.forkserver to use os.readinto() (#129425) X-Git-Tag: v3.14.0a5~164 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=10ee2d9d3bcde27c75f179214ad41c00e4852a7a;p=thirdparty%2FPython%2Fcpython.git gh-129205: Update multiprocessing.forkserver to use os.readinto() (#129425) --- diff --git a/Lib/multiprocessing/forkserver.py b/Lib/multiprocessing/forkserver.py index df9b9be9d189..681af2610e9b 100644 --- a/Lib/multiprocessing/forkserver.py +++ b/Lib/multiprocessing/forkserver.py @@ -382,13 +382,14 @@ def _serve_one(child_r, fds, unused_fds, handlers): # def read_signed(fd): - data = b'' - length = SIGNED_STRUCT.size - while len(data) < length: - s = os.read(fd, length - len(data)) - if not s: + data = bytearray(SIGNED_STRUCT.size) + unread = memoryview(data) + while unread: + count = os.readinto(fd, unread) + if count == 0: raise EOFError('unexpected EOF') - data += s + unread = unread[count:] + return SIGNED_STRUCT.unpack(data)[0] def write_signed(fd, n):