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