从Python中的多个线程中剔除

Ben*_*enH 5 python pickle

我有一个包含多个线程的python程序.每个线程检测事件,我想将其存储在某处,以便我可以再次读取它们(用于测试).现在,我正在使用Pickle输出事件,每个线程输出到不同的文件.理想情况下,我只使用一个输出文件,并且所有线程都会写入它,但是当我尝试这个时,看起来各个线程试图同时写入它们的输出,并且它们没有被正确地腌制.有没有办法做到这一点?

Cor*_*erg 4

似乎是一个使用Queue.

  • 让所有事件检测线程将项目放入共享队列中。
  • 创建另一个线程以从队列中获取项目,并从此线程中写入/腌制/任何内容。

来自队列文档:

“Queue 模块实现了多生产者、多消费者队列。当必须在多个线程之间安全地交换信息时,它在线程编程中特别有用。该模块中的 Queue 类实现了所有必需的锁定语义。它取决于Python 中的线程支持;请参阅线程模块。”