Powiel możliwe:
Can select() be used with files in Python under Windows?Korzystanie sys.stdin w select.select Windows
W systemie UNIX jestem w stanie przekazać sys.stdin
do select.select
w Pythonie. Próbuję to zrobić w systemie Windows, ale select.select
w Pythonie w systemie Windows nie pozwoli na to.
Aby dokładniej opisać, co robię, zobacz: https://github.com/eldarion/gondor-client/blob/ccbbf9d4b61ecbc2f66f510b993eb5fba0d81c09/gondor/run.py.
Funkcja unix_run_poll
jest tym, co próbuję wykonać w systemie Windows. Podstawową ideą jest to, że mam połączenie z gniazdem do serwera, który podłączył transmisję stdin, stdout, stderr do procesu działającego zdalnie, i wchodzę z nim w interakcję z lokalnego klienta i wydaje się, że lokalny klient działa proces.
The win32_run_poll
jest moją próbą przeniesienia go do systemu Windows i działa, sort. To trochę niesmaczne, a podejście, IMO, jest bardzo złe.
Czy ktoś ma sugestie, w jaki sposób można to poprawić? Zależność od win32api jest mniejsza niż idealna, ale jestem w porządku z jej utrzymaniem.
Czy przeglądałeś biblioteki/frameworki dedykowane implementacjom pętli zdarzeń? Na przykład [twisted] (http://twistedmatrix.com/trac/) ma dwie implementacje [reaktora Win32] (http://twistedmatrix.com/documents/current/core/howto/choosing-reactor.html# win32_wfmo). – user4815162342
Zabawne, że o tym wspomniałeś. Zdarzyło mi się to teraz robić. :-) –
Inną możliwością jest przekazanie skryptu do gniazda, zamiast owijania go jako stdin/stdout skryptu, a następnie można po prostu użyć select.select. – abarnert