AttributeError: 'module' object has no attribute 'fork'

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Aug 7 12:56:56 EDT 2014


Roy Smith wrote:

> In article <mailman.12720.1407394838.18130.python-list at python.org>,
>  Peter Otten <__peter__ at web.de> wrote:
> 
>> os.fork()
>> Fork a child process.
>> ...
>> Availability: Unix.
>> """
>> 
>> You are using the wrong operating system ;)
> 
> To be honest, this could be considered a buglet in the os module.  It
> really should raise:
> 
> NotImplementedError("fork() is only available on unix")
> 
> or perhaps even, as Peter suggests:
> 
> NotImplementedError("You are using the wrong operating system")
> 
> either of those would be better than AttributeError.


I disagree. How would you tell if fork is implemented? With the current
behaviour, telling whether fork is implemented or not is simple:

is_implemented = hasattr(os, "fork")


With your suggestion:

try:
    pid = os.fork()
except NotImplementedError:
    is_implemented = False
else:
    if pid == 0:
        # In the child process.
        os._exit(0)  # Unconditionally exit, right now, no excuses.
    is_implemented = True


which is not obvious, simple or cheap.


-- 
Steven




More information about the Python-list mailing list