Skip to content

Commit 10ee2d9

Browse files
authored
gh-129205: Update multiprocessing.forkserver to use os.readinto() (#129425)
1 parent 510fefd commit 10ee2d9

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

Lib/multiprocessing/forkserver.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -382,13 +382,14 @@ def _serve_one(child_r, fds, unused_fds, handlers):
382382
#
383383

384384
def read_signed(fd):
385-
data = b''
386-
length = SIGNED_STRUCT.size
387-
while len(data) < length:
388-
s = os.read(fd, length - len(data))
389-
if not s:
385+
data = bytearray(SIGNED_STRUCT.size)
386+
unread = memoryview(data)
387+
while unread:
388+
count = os.readinto(fd, unread)
389+
if count == 0:
390390
raise EOFError('unexpected EOF')
391-
data += s
391+
unread = unread[count:]
392+
392393
return SIGNED_STRUCT.unpack(data)[0]
393394

394395
def write_signed(fd, n):

0 commit comments

Comments
 (0)