Plattformsstöd¶
Modulen asyncio är utformad för att vara portabel, men vissa plattformar har subtila skillnader och begränsningar på grund av plattformarnas underliggande arkitektur och kapacitet.
Alla plattformar¶
loop.add_reader()ochloop.add_writer()kan inte användas för att övervaka fil-I/O.
Windows¶
Källkod: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py
Ändrad i version 3.8: I Windows är ProactorEventLoop nu standardhändelseslingan.
Alla händelseslingor i Windows stöder inte följande metoder:
loop.create_unix_connection()ochloop.create_unix_server()stöds inte. Socketfamiljensocket.AF_UNIXär specifik för Unix.loop.add_signal_handler()ochloop.remove_signal_handler()stöds inte.
SelectorEventLoop har följande begränsningar:
SelectSelectoranvänds för att vänta på socket-händelser: den stöder sockets och är begränsad till 512 sockets.loop.add_reader()ochloop.add_writer()accepterar endast socket-handtag (t.ex. pipe file descriptors stöds inte).Pipes stöds inte, så metoderna
loop.connect_read_pipe()ochloop.connect_write_pipe()implementeras inte.Subprocesser stöds inte, dvs. metoderna
loop.subprocess_exec()ochloop.subprocess_shell()implementeras inte.
ProactorEventLoop har följande begränsningar:
Metoderna
loop.add_reader()ochloop.add_writer()stöds inte.
Upplösningen för den monotona klockan i Windows är vanligtvis cirka 15,6 millisekunder. Den bästa upplösningen är 0,5 millisekunder. Upplösningen beror på maskinvaran (tillgång till HPET) och på Windows-konfigurationen.
Stöd för underprocesser i Windows¶
I Windows har standardhändelseslingan ProactorEventLoop stöd för underprocesser, medan SelectorEventLoop inte har det.
macOS¶
Moderna macOS-versioner stöds fullt ut.
macOS <= 10.8
På macOS 10.6, 10.7 och 10.8 använder standardhändelseslingan selectors.KqueueSelector, som inte stöder teckenenheter på dessa versioner. Händelseslingan SelectorEventLoop kan konfigureras manuellt så att den använder SelectSelector eller PollSelector för att stödja teckenenheter i dessa äldre versioner av macOS. Exempel:
import asyncio
import selectors
selector = selectors.SelectSelector()
loop = asyncio.SelectorEventLoop(selector)
asyncio.set_event_loop(loop)