chris1234
chris1234

Reputation: 73

Threads or asyncio gather?

Which is the best method to do concurrent i/o operations?

There will be list of files.

I open the files and generate a graph using the .txt file and store it on the disk.

I have tried using threads but its time consuming and sometimes it does not generate a graph for some files.

Is there any other method?

I tried with the code below with async on the load_instantel_ascii function but it gives exception

 for fl in self.finallist:
   k = randint(0, 9)
 try:

 task2.append( * [load_instantel_ascii(fleName = fl, columns = None,
   out = self.outdir,
   separator = ',')])

 except:
   print("Error on Graph Generation")

 event_loop.run_until_complete(asyncio.gather(yl1
     for kl1 in task2)

 )

Upvotes: 0

Views: 1243

Answers (1)

Mikhail Gerasimov
Mikhail Gerasimov

Reputation: 39546

If I understood everything correct and you want asynchronous file I/O, then asyncio itself doesn't support it out of the box. In the end all asyncio-related stuff that provides async file I/O does it using threads pool.

But it probably doesn't mean you shouldn't use asyncio: this lib is cool as a way to write asynchronous code in a first place, even if it wrapper above threads. I would give a try to something like aiofiles.

Upvotes: 1

Related Questions