FTP 下载冻结整个应用程序
FTP downloading freezes the whole application
我正在尝试从 FTP 服务器下载一个大约 100 MB 的文件。这是一个测试 .bin 文件,因为我正在测试该应用程序,我想我将来要下载的文件会更重。当我想下载文件时,整个应用程序会冻结,然后在几秒钟后下载文件。该文件是完整的,它下载成功,没有任何错误或类似的东西。唯一的问题是冻结。
我的代码:
ftp = FTP('exampledomain.com')
ftp.login(user='user', passwd='password')
ftp.cwd('/main_directory/')
filename = '100MB.bin'
with open(filename, 'wb') as localfile:
ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
ftp.quit()
localfile.close()
我尝试在某些代码行之间使用 sleep()
,例如在登录和下载文件之间,但它没有帮助,而且 sleep()
似乎根本不起作用使用 FTP.
在另一个线程上下载文件:
import threading
import time
from ftplib import FTP
def download():
ftp = FTP('exampledomain.com')
ftp.login(user='user', passwd='password')
ftp.cwd('/main_directory/')
filename = '100MB.bin'
with open(filename, 'wb') as localfile:
ftp.retrbinary('RETR ' + filename, localfile.write)
ftp.quit()
print("Starting download...")
thread = threading.Thread(target=download)
thread.start()
print("Download started")
while thread.isAlive():
print("Still downloading...")
time.sleep(1)
print("Done")
基于:
关于修改 PyQt 代码的后续问题:
我正在尝试从 FTP 服务器下载一个大约 100 MB 的文件。这是一个测试 .bin 文件,因为我正在测试该应用程序,我想我将来要下载的文件会更重。当我想下载文件时,整个应用程序会冻结,然后在几秒钟后下载文件。该文件是完整的,它下载成功,没有任何错误或类似的东西。唯一的问题是冻结。
我的代码:
ftp = FTP('exampledomain.com')
ftp.login(user='user', passwd='password')
ftp.cwd('/main_directory/')
filename = '100MB.bin'
with open(filename, 'wb') as localfile:
ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
ftp.quit()
localfile.close()
我尝试在某些代码行之间使用 sleep()
,例如在登录和下载文件之间,但它没有帮助,而且 sleep()
似乎根本不起作用使用 FTP.
在另一个线程上下载文件:
import threading
import time
from ftplib import FTP
def download():
ftp = FTP('exampledomain.com')
ftp.login(user='user', passwd='password')
ftp.cwd('/main_directory/')
filename = '100MB.bin'
with open(filename, 'wb') as localfile:
ftp.retrbinary('RETR ' + filename, localfile.write)
ftp.quit()
print("Starting download...")
thread = threading.Thread(target=download)
thread.start()
print("Download started")
while thread.isAlive():
print("Still downloading...")
time.sleep(1)
print("Done")
基于:
关于修改 PyQt 代码的后续问题: