New submission from STINNER Victor <vstin...@python.org>:

The default value of subprocess.Popen "close_fds" parameter changed to True in 
Python 3. Compared to Python 2, close_fds=True can make Popen 10x slower: see 
bpo-37790.

A single close(fd) syscall is cheap. But when MAXFDS (maximum file descriptor 
number) is high, the loop calling close(fd) on each file descriptor can take 
several milliseconds.

On FreeBSD, the _posixsubprocess could use closefrom() to reduce the number of 
syscalls.

On Linux, _posixsubprocess lists the content of /proc/self/fd/ to only close 
open file descriptor, after fork() and before exec().

----------
components: Library (Lib)
messages: 351351
nosy: vstinner
priority: normal
severity: normal
status: open
title: FreeBSD: Optimize subprocess.Popen(close_fds=True) using closefrom()
type: enhancement
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue38061>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to