【问题标题】:Python threading flow control in concise way简洁的Python线程流控制
【发布时间】:2011-05-07 00:57:10
【问题描述】:

我想上传一个文件到两个 ftp 站点。都完成后,我需要删除文件。 在不阻塞main函数运行的情况下,ftp和delete函数都将通过线程来实现,也就是说后台会有3个线程同时运行。一个简单的问题因为线程而变得复杂。

以下是可能的解决方案:

  1. 使用队列并将所有三个线程按顺序排列
  2. 使用互斥锁

两者都有效,但我认为它们不是最好的方法。任何人都可以分享他/她的想法吗?

【问题讨论】:

    标签: python multithreading mutex


    【解决方案1】:

    使用信号量

    在您的父处理程序中创建一个 0 的信号量并将其交给线程。

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-29
      • 2012-09-21
      • 2023-04-10
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多