我正在使用 Python 的多处理通过 FTP 进行批量下载。但是,当我尝试打开超过 5 个 ftp 会话时,会引发 EOFError,这意味着主机因为打开太多会话而断开了我的连接。
我看到的唯一解决方案是打开一个 FTP 对象并将其传递给必要的方法。问题是因为多处理使用酸洗来移动对象,而 FTP 对象不能酸洗,这是不可能的。因此,我的问题是是否可以通过找到一种腌制 FTP 对象的方法来解决这个问题?
我的代码采用以下形式:
def get_file(name):
#code here
def worker(name_list, out_q):
lst = []
for name in name_list:
lst.append(get_file(name))
out_q.put(lst)
if __name__ == '__main__':
#est ftp cnxn
ftp = FTP('ftp.blah.blah', 'anonymous', 'meow')
#multiprocessing code here
get_file def 需要访问 ftp 连接,如果我把它放在if __name__ == '__main__'
块之外,那么每次进程运行代码时都会创建一个新的 ftp 连接。