同时读取一个大的Fi

2024-06-25 05:57:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个python管道来处理非常大的二进制文件(即50+GB)。它们是BAM文件,一种用于表示基因组的格式。我的脚本目前被两个非常昂贵的子进程调用所限制

这两个命令占用了管道每次运行80%的计算时间,因此我需要找出一种方法来加快这个过程。他们从同一个文件中读取数据。我想知道使这项工作更有效率的最佳途径。基本上,是否有一种特别的并发风格最适合工作?还是有其他有趣的方法

谢谢

命令:

subprocess.call('samtools视图-b-f 68{}>;{}_unmapped\u one.bam'.格式(self.file\u路径,self.file\u前缀),shell=True

subprocess.call('samtools视图-b-f 132{}>;{}_unmapped\u two.bam'.格式(self.file\u路径,self.file\u前缀),shell=True


Tags: 文件方法命令gtself路径视图管道
1条回答
网友
1楼 · 发布于 2024-06-25 05:57:46

对于您所描述的内容和您共享的代码,我可以想出几种提高性能的方法

  1. 如果您在程序的shell中生成子进程来处理文件,这种方法会因程序运行的硬件而异,如果这是一个多处理器环境,那么它可能是一种很好的方法
  2. 考虑使用pysam库来包装低级hstlibapi
  3. 根据您开发的应用程序流,您可以通过使用asyncio扩展并发活动来显著提高性能。Brad Salomon最近的一篇article很快解释了多处理和多线程的好处,并深入研究了asyncio
  4. 如果最终在基于unix的系统上使用asyncio,我还建议您查看将libuv包装为事件循环的uvloop

相关问题 更多 >