通过分析,我确定程序大约 60% 的时间花在写入文件上,一行:
fout.write('%d\t%d\n' % (i, j))
这里 i 和 j 是整数。有两个问题:在 Cython 中实现这一点会给我带来显着的速度增益,以及我将如何在 Cython 中实现它?我无法找到从 Cython 写入文件的示例。
关于最后一点,这一行出现在一个函数中,该函数经常被我的程序的其余部分调用以将输出转储到文件中,因此我想在函数调用之间保持文件打开状态,并传入一个文件对象,而不是在每次调用中重新打开文件。
最佳答案
通过向硬盘发送压缩数据量,您可以获得显着的性能提升,这可以使用 numpy.savez_compressed()
来实现。 ,或以二进制格式写入:
with open('name.output', 'wb') as fout:
fout.write(data)
Cython 使用与 Python 相同的函数来编写文件,通过 Python API 访问,因此它不应使其更快。
关于python - 从 cython 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21716382/