mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 03:22:27 +00:00 
			
		
		
		
	Use "second", "millisecond", "microsecond", "nanosecond" instead of "sec", "ms", "msec", "us", "ns", etc.
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. currentmodule:: asyncio
 | 
						|
 | 
						|
 | 
						|
.. _asyncio-platform-support:
 | 
						|
 | 
						|
 | 
						|
================
 | 
						|
Platform Support
 | 
						|
================
 | 
						|
 | 
						|
The :mod:`asyncio` module is designed to be portable,
 | 
						|
but some platforms have subtle differences and limitations
 | 
						|
due to the platforms' underlying architecture and capabilities.
 | 
						|
 | 
						|
 | 
						|
All Platforms
 | 
						|
=============
 | 
						|
 | 
						|
* :meth:`loop.add_reader` and :meth:`loop.add_writer`
 | 
						|
  cannot be used to monitor file I/O.
 | 
						|
 | 
						|
 | 
						|
Windows
 | 
						|
=======
 | 
						|
 | 
						|
**Source code:** :source:`Lib/asyncio/proactor_events.py`,
 | 
						|
:source:`Lib/asyncio/windows_events.py`,
 | 
						|
:source:`Lib/asyncio/windows_utils.py`
 | 
						|
 | 
						|
--------------------------------------
 | 
						|
 | 
						|
.. versionchanged:: 3.8
 | 
						|
 | 
						|
   On Windows, :class:`ProactorEventLoop` is now the default event loop.
 | 
						|
 | 
						|
All event loops on Windows do not support the following methods:
 | 
						|
 | 
						|
* :meth:`loop.create_unix_connection` and
 | 
						|
  :meth:`loop.create_unix_server` are not supported.
 | 
						|
  The :data:`socket.AF_UNIX` socket family is specific to Unix.
 | 
						|
 | 
						|
* :meth:`loop.add_signal_handler` and
 | 
						|
  :meth:`loop.remove_signal_handler` are not supported.
 | 
						|
 | 
						|
:class:`SelectorEventLoop` has the following limitations:
 | 
						|
 | 
						|
* :class:`~selectors.SelectSelector` is used to wait on socket events:
 | 
						|
  it supports sockets and is limited to 512 sockets.
 | 
						|
 | 
						|
* :meth:`loop.add_reader` and :meth:`loop.add_writer` only accept
 | 
						|
  socket handles (e.g. pipe file descriptors are not supported).
 | 
						|
 | 
						|
* Pipes are not supported, so the :meth:`loop.connect_read_pipe`
 | 
						|
  and :meth:`loop.connect_write_pipe` methods are not implemented.
 | 
						|
 | 
						|
* :ref:`Subprocesses <asyncio-subprocess>` are not supported, i.e.
 | 
						|
  :meth:`loop.subprocess_exec` and :meth:`loop.subprocess_shell`
 | 
						|
  methods are not implemented.
 | 
						|
 | 
						|
:class:`ProactorEventLoop` has the following limitations:
 | 
						|
 | 
						|
* The :meth:`loop.add_reader` and :meth:`loop.add_writer`
 | 
						|
  methods are not supported.
 | 
						|
 | 
						|
The resolution of the monotonic clock on Windows is usually around 15.6
 | 
						|
milliseconds.  The best resolution is 0.5 milliseconds. The resolution depends on the
 | 
						|
hardware (availability of `HPET
 | 
						|
<https://en.wikipedia.org/wiki/High_Precision_Event_Timer>`_) and on the
 | 
						|
Windows configuration.
 | 
						|
 | 
						|
 | 
						|
.. _asyncio-windows-subprocess:
 | 
						|
 | 
						|
Subprocess Support on Windows
 | 
						|
-----------------------------
 | 
						|
 | 
						|
On Windows, the default event loop :class:`ProactorEventLoop` supports
 | 
						|
subprocesses, whereas :class:`SelectorEventLoop` does not.
 | 
						|
 | 
						|
The :meth:`policy.set_child_watcher()
 | 
						|
<AbstractEventLoopPolicy.set_child_watcher>` function is also
 | 
						|
not supported, as :class:`ProactorEventLoop` has a different mechanism
 | 
						|
to watch child processes.
 | 
						|
 | 
						|
 | 
						|
macOS
 | 
						|
=====
 | 
						|
 | 
						|
Modern macOS versions are fully supported.
 | 
						|
 | 
						|
.. rubric:: macOS <= 10.8
 | 
						|
 | 
						|
On macOS 10.6, 10.7 and 10.8, the default event loop
 | 
						|
uses :class:`selectors.KqueueSelector`, which does not support
 | 
						|
character devices on these versions.  The :class:`SelectorEventLoop`
 | 
						|
can be manually configured to use :class:`~selectors.SelectSelector`
 | 
						|
or :class:`~selectors.PollSelector` to support character devices on
 | 
						|
these older versions of macOS.  Example::
 | 
						|
 | 
						|
    import asyncio
 | 
						|
    import selectors
 | 
						|
 | 
						|
    selector = selectors.SelectSelector()
 | 
						|
    loop = asyncio.SelectorEventLoop(selector)
 | 
						|
    asyncio.set_event_loop(loop)
 |