问题描述
multiprocessing.Pool
作为更高级别的界面,您可能会发现有用。
from multiprocessing import Pool
def upload(file):
ftp = ftplib.FTP('domainname.com')
ftp.login("username","password")
f = open(x,'rb')
ftp.storbinary('STOR %s' %x, f)
f.close()
ftp.quit()
infiles = [file1,file2,file3.....filen]
pool = Pool(10) # submit 10 at once
pool.map(upload,infiles)
很好,因为map
其行为类似于内置函数。对于调试,只需替换pool.map
->即可map
。
解决方法
我们不断从数据库中生成数据文件,然后通过FTP’D将数据文件传输到其他位置。我们有一个极化器,它不断监视此文件夹,并在它看到文件后立即将其作为FTP的文件
当前,此过程是顺序的,当文件变大时,会有备份,这会导致严重的延迟。我想并行处理事情,即一次处理多个文件。我不确定线程/多处理以及它如何为我工作。
这是我的代码
import ftplib
ftp = ftplib.FTP('domainname.com')
ftp.login("username","password")
infiles = [file1,file2,file3.....filen]
for x in infiles:
f = open(x,'rb')
ftp.storbinary('STOR %s' %x,f)
f.close()
ftp.quit()
我在想,因为这是I / O密集型工作,所以多处理是必经之路,有关如何进行的任何想法。