Mark Harviston

Results 59 comments of Mark Harviston

Yeah that's not great. It'd be good to get profile information out, to see why it's running slowly.

ok, so most time is spent here: https://github.com/harvimt/quamash/blob/master/quamash/__init__.py#L187 and here: https://github.com/harvimt/quamash/blob/master/quamash/__init__.py#L332-L342 somewhat unsurprising. possible improvements: - make `self.__timers` a `set` (may make perf worse since self.__timers is usually small) -...

Qt's IO subsystem just isn't that fast? Context switches between Qt & Python are so slow it doesn't matter? I think that's about as performant as we can get without...

ugh that's the low-level test. I only wrote the low-level tests because the high level tests failed and I didn't know why. this code is what stops the loop when...

no. basically I mean if there's a Qt Library for something IO-related (like say [QNetworkRequest](https://doc.qt.io/qt-5/qnetworkrequest.html)) vs a python-native module that doesn't depend on Qt (like say [aiohttp](https://aiohttp.readthedocs.io/en/stable/)), you should use...

that would extend to python built-in functions as well, like local file access, and direct network sockets.

Asynker is interesting... it's gives me most of what I wanted out of quamash... though not subprocess support. (unless I put the subprocess in a thread?) QAbstractEventDispatcher would allow you...

things to try: set the default executor to a concurrent.futures.ThreadPoolExecutor loop.set_default_executor(concurrent.futures.ThreadPoolExecutor(10)) Modify getaddrinfo on the event loop (say by modifying QEventLoop) ``` def getaddrinfo(self, host, port, *, family=0, type=0, proto=0,...

the sync version of getaddrinfo I sent you doesn't actually handle exceptions correctly: try: ``` def getaddrinfo(self, host, port, *, family=0, type=0, proto=0, ``` flags=0): future = asyncio.Future() try: if...

On Windows, Quamash doesn't extend the default event loop (selector), instead it extends the Proactor event loop. (this is because I find the Proactor more useful, since it supports subprocesses...)...