Python线程流的简洁控制
我想上传一个文件到两个ftp站点。完成这两项后,我需要删除该文件。 如果不阻止主功能运行,ftp和删除功能都将通过线程实现,这意味着将有3个线程同时在后台运行。一个简单的问题因为线程而变得复杂 以下是可能的解决办法:Python线程流的简洁控制,python,multithreading,mutex,Python,Multithreading,Mutex,我想上传一个文件到两个ftp站点。完成这两项后,我需要删除该文件。 如果不阻止主功能运行,ftp和删除功能都将通过线程实现,这意味着将有3个线程同时在后台运行。一个简单的问题因为线程而变得复杂 以下是可能的解决办法: 使用队列并将所有三个线程按顺序排列 使用互斥 这两种方法都有效,但我认为它们不是最好的方法。有人能分享他/她的想法吗 使用信号灯 在父处理程序中,创建一个0的信号量,并将其传递给线程 import threading sem = threading.Semaphore(0) h
import threading
sem = threading.Semaphore(0)
hostThread = threading.Thread(target=uploadToHost, args=(sem,))
backupThread = threading.Thread(target=uploadToBackup, args=(sem,))
sem.acquire() # Wait for one of them to finish
sem.acquire() # Wait for the other to finish
在您的孩子中,上传完成后,您只需调用sem.release