Commit 626347ce authored by Victor Stinner's avatar Victor Stinner

Issue #20455: asyncio: use the same code to round a timeout than the selectors

module

Sort also imports
parent fa0969ce
"""Selector and proactor eventloops for Windows.""" """Selector and proactor eventloops for Windows."""
import _winapi
import errno import errno
import math
import socket import socket
import struct
import subprocess import subprocess
import weakref import weakref
import struct
import _winapi
from . import events from . import events
from . import base_subprocess from . import base_subprocess
...@@ -325,7 +326,9 @@ class IocpProactor: ...@@ -325,7 +326,9 @@ class IocpProactor:
if timeout is None: if timeout is None:
ms = _winapi.INFINITE ms = _winapi.INFINITE
else: else:
ms = int(timeout * 1000 + 0.5) # RegisterWaitForSingleObject() has a resolution of 1 millisecond,
# round away from zero to wait *at least* timeout seconds.
ms = math.ceil(timeout * 1e3)
# We only create ov so we can use ov.address as a key for the cache. # We only create ov so we can use ov.address as a key for the cache.
ov = _overlapped.Overlapped(NULL) ov = _overlapped.Overlapped(NULL)
...@@ -396,7 +399,9 @@ class IocpProactor: ...@@ -396,7 +399,9 @@ class IocpProactor:
elif timeout < 0: elif timeout < 0:
raise ValueError("negative timeout") raise ValueError("negative timeout")
else: else:
ms = int(timeout * 1000 + 0.5) # GetQueuedCompletionStatus() has a resolution of 1 millisecond,
# round away from zero to wait *at least* timeout seconds.
ms = math.ceil(timeout * 1e3)
if ms >= INFINITE: if ms >= INFINITE:
raise ValueError("timeout too big") raise ValueError("timeout too big")
while True: while True:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment