我刚刚发现Python脚本的瓶颈是将一个文本文件逐行写入我们的QNAP NAS。 请参阅附件的Python代码片段。 这是否必然如此缓慢,或者我们的QNAP /networking设置有什么问题?
# local SSD: 2 seconds with open(r'C:\Daten\numbers.txt', 'w') as f: # local SSD with buffering: 2 seconds with open(r'C:\Daten\numbers.txt', 'w', buffering=2**20) as f: # Share on QNAP NAS: ### 36 ... 61 seconds! ### with open(r'I:\numbers.txt', 'w') as f: # Share on QNAP NAS with buffering: 2 ... 3 seconds with open(r'I:\numbers.txt', 'w', buffering=2**20) as f: for i in range(1000000): print(i, file=f)
与较大的传输相比, 任何小型I / O都将变得昂贵。 在这种情况下,情况正在恶化:
虽然可以通过微调NFS / CIFS / SMB服务器行为来稍微提高性能,但我强烈build议您避免使用通用非缓冲I / O,而采用缓冲I / O +显式清除点(如果您的应用程序需要)。