【问题标题】:Threads or asyncio gather?线程或异步聚集?
【发布时间】:2018-05-27 04:47:22
【问题描述】:

执行并发 i/o 操作的最佳方法是什么?

  • 线程或
  • 异步

会有文件列表。

我打开文件并使用.txt 文件生成图表并将其存储在磁盘上。

我尝试过使用线程,但它很耗时,有时它不会为某些文件生成图表。

还有其他方法吗?

我在load_instantel_ascii 函数上尝试使用下面的代码异步,但它给出了异常

 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)

 )

【问题讨论】:

  • 重新格式化您的代码。你的 20 个字符的缩进很糟糕。

标签: python-3.x python-asyncio


【解决方案1】:

如果我理解一切正确并且您想要异步文件 I/O,那么 asyncio 本身 doesn't support 它开箱即用。最后,提供async file I/O 的所有与异步相关的东西都使用线程池来完成。

但这可能并不意味着您不应该使用asyncio:这个库作为一种首先编写异步代码的方式很酷,即使它包装在线程之上。我会尝试aiofiles之类的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2020-01-15
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多