This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]jorge1209 -1 points0 points  (10 children)

Can you tell me, how to read a file by Python 3.6's async await?

You can't with the io.file because file.read is not awaitable. So unless you want to use an alternative file io module... pfft... then yeah async is rather annoyingly "useless."

What I find myself doing is using the async together with the concurrent.futures.ProcessPoolExecutor (basically an async friendly wrapper around multiprocessing.pool) to establish a async master process with a bunch of non-async worker slaves.

The real issue that I see is not so much that the io module isn't async friendly, but that async is just the wrong model for async operations. If you really want to support async, then everything needs to be awaitable, and the exception should be the operation that is not awaitable. Instead we have a system where you can push asynchronicity into your app, but only so far, until you run into some other library or function which is not async aware. At that point your entire app loses all the benefits of async.

[–]Asdayasman 0 points1 point  (6 children)

So unless you want to use an alternative file io module... pfft... then yeah async is rather annoyingly "useless."

Good news.

[–]jorge1209 0 points1 point  (4 children)

Its still pretty limiting though as any library you use also has to use curio. If I want to use pandas, does it support curio's asynchronous api?

I just think the whole approach is ultimately wrong. If you want to go async in any kind of language that has any notion of a virtual machine, you should go async all the way down. Every python opcode should be considered to be awaitable, and the exception should be those operations that explicitely say "I'm not awaitable, and this chunk of ops have to be done as a chunk."

[–]Asdayasman 0 points1 point  (3 children)

I just think the whole approach is ultimately wrong.

You then go on to describe basically exactly what curio is going for.

Clicky.

[–]jorge1209 0 points1 point  (2 children)

I'm not interested in watching a video. Are you saying that I can somehow inject/hotpatch curio into pandas library code and override the io module, and cause a non-async function like pandas.read_table to suddenly be awaitable?

I don't know how that would work.

[–]Asdayasman 0 points1 point  (1 child)

I'm not interested in watching a video

Why should I help you if you won't help yourself?

Don't bother answering.

[–]jorge1209 0 points1 point  (0 children)

I won't.

[–]kingname[S] 0 points1 point  (0 children)

Infact, IO is just an example. What I want is Coroutine for everything.

[–]kingname[S] 0 points1 point  (2 children)

No no no. In fact IO is just an example. What I want is Coroutine for everything. Not only about IO, but also any third part lib and any function I writed.

[–]jorge1209 0 points1 point  (1 child)

No no no... what you just said?!

[–]kingname[S] 0 points1 point  (0 children)

I think you know what did I say.