2016-09-12 62 views
0

我正试图在Python中创建一个多线程散列破解/ bruteforcer,并且当线程生成所有可能的单词组合并将它们放在一个队列中时,遇到一个问题,同时有10个其他线程散列该队列。问题是10个哈希线程占用了1个线程生成器的执行时间,瓶颈了它。所以我的问题是这样的:是否有可能让一个进程更新一个队列,并且可以在Python中同时使用其他线程?线程使用队列时,进程是否可以更新共享队列?

+0

是 - 查看'multiprocessing.Queue'的文档 –

回答

0

multiprocessing.Queue对象是进程和线程安全的。

我会让你的解决方案的主循环填充队列,而多个进程散列其内容。

由于你的工作似乎是CPU绑定,我会避免线程。

+0

感谢您的回答。我有一个for循环,通过put调用来加载单词和get call来获取每个单词和散列。这导致了〜2,000,000-12,000,000个获取和放置呼叫锁定队列常量,并且我的程序非常慢。现在我在一个'bytearray'中存储了500,000个单词,导致了一个荒谬的速度提升 –