Python Paramiko SFTPClient.open method is slow Ask Question
2022/7/26 1:22:49
本文主要是介绍Python Paramiko SFTPClient.open method is slow Ask Question,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
链接:https://stackoverflow.com/questions/58433996/reading-file-opened-with-python-paramiko-sftpclient-open-method-is-slow
Reading file opened with Python Paramiko SFTPClient.open method is slow
I am trying to remote read a netcdf file.
I used Paramiko package to read my file, like this:
import paramiko from netCDF4 import Dataset client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname=’hostname’, username=’usrname’, password=’mypassword’) sftp_client = client.open_sftp() ncfile = sftp_client.open('mynetCDFfile') b_ncfile = ncfile.read() # **** nc = Dataset('test.nc', memory=b_ncfile)
But the run speed of ncfile.read()
is VERY SLOW.
So my question is: Is there any alternative way to read a netcdf file remotely, or is there any approach to speed up paramiko.sftp_file.SFTPFile.read()
?
1 Answer
Calling SFTPFile.prefetch
should increase the read speed:
ncfile = sftp_client.open('mynetCDFfile') ncfile.prefetch() b_ncfile = ncfile.read()
Another option is enabling read buffering, using bufsize
parameter of SFTPClient.open
:
ncfile = sftp_client.open('mynetCDFfile', bufsize=32768) b_ncfile = ncfile.read()
(32768
is a value of SFTPFile.MAX_REQUEST_SIZE
)
Similarly for writes/uploads:
Writing to a file on SFTP server opened using pysftp "open" method is slow.
Yet another option is to explicitly specify the amount of data to read (it makes BufferedFile.read
take a more efficient code path):
ncfile = sftp_client.open('mynetCDFfile') b_ncfile = ncfile.read(ncfile.stat().st_size)
If none of that works, you can download the whole file to memory instead:
Use pdfplumber and Paramiko to read a PDF file from an SFTP server
Obligatory warning: Do not use AutoAddPolicy
this way – You are losing a protection against MITM attacks by doing so. For a correct solution, see Paramiko "Unknown Server".
这篇关于Python Paramiko SFTPClient.open method is slow Ask Question的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门