我有一个FTP功能,跟踪运行上传进度,但我对线程的理解是有限的,我一直无法实现一个有效的解决方案。。。我想通过使用线程技术将GUI进度条添加到当前的应用程序中。有人能告诉我一个使用异步线程的基本函数,可以从另一个正在运行的线程更新吗?你知道吗
def ftpUploader():
BLOCKSIZE = 57344 # size 56 kB
ftp = ftplib.FTP()
ftp.connect(host)
ftp.login(login, passwd)
ftp.voidcmd("TYPE I")
f = open(zipname, 'rb')
datasock, esize = ftp.ntransfercmd(
'STOR %s' % os.path.basename(zipname))
size = os.stat(zipname)[6]
bytes_so_far = 0
print 'started'
while 1:
buf = f.read(BLOCKSIZE)
if not buf:
break
datasock.sendall(buf)
bytes_so_far += len(buf)
print "\rSent %d of %d bytes %.1f%%\r" % (
bytes_so_far, size, 100 * bytes_so_far / size)
sys.stdout.flush()
datasock.close()
f.close()
ftp.voidresp()
ftp.quit()
print 'Complete...'
这里是线程的一个快速概述,以防万一:)我不会对GUI的内容进行太多的详细介绍,只是说您应该检查wxWidgets。每当你做一些需要很长时间的事情,比如:
您会注意到,对于用户来说,整个代码块似乎需要50秒。在这5秒钟内,您的应用程序无法执行更新接口之类的操作,因此看起来它被冻结了。为了解决这个问题,我们使用线程。你知道吗
通常这个问题有两个部分:一个是你想要处理的事情的整体集合,另一个是我们想要处理的需要一段时间的操作。在本例中,整个集合是for循环,我们想要切碎的操作是sleep(10)函数。你知道吗
下面是一个线程代码的快速模板,基于我们前面的示例。您应该能够在这个示例中使用您的代码。你知道吗
要调用此线程,只需执行以下操作:
相关问题 更多 >
编程相关推荐