多处理?多线程?游泳池?排队?暴力逼供

2024-10-01 05:05:19 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个常识性的问题,很快就会变成一个项目。我有一个脚本,试图用已知的盐来蛮力对付沙阿。在这个应用中,盐是已知的。不管怎样,这个脚本运行得很好,它是一个python脚本。当我运行它时,它超过了我可用的16个核心。我想也利用所有16个核心的暴力攻击!我在脚本上做了一点小改动,并能够在这里使用一个示例来利用多个内核,但是wholey没有使用它们。在

http://forum.openopt.org/viewtopic.php?id=51

这种parrelization的东西对我来说是很新的,我不知道如何用python(更不用说任何脚本语言)来处理它。在

TL;DR,在python中,在一个hash(比如MD5)上利用所有可用的核心的最佳方法是什么?在

基本上我现在拥有的是。。。(注意释义的代码)

from multiprocessing imports Pools

def prog()
    generate hash_attempt
    compare it to target
jobs = []
po = Pool()
for stuff in things:
    po.apply_sync(prog())

这是可行的,但正如我所说,它没有充分利用所有的核心,然后有时它只是随机杀死。它将停止执行,我调用脚本的终端将返回到它的提示符,在它上面,它会说,“Killed”。奇怪的东西。在

多谢了!在


Tags: 项目脚本http利用示例核心hash内核
1条回答
网友
1楼 · 发布于 2024-10-01 05:05:19

由于全局解释器锁,您不能有效地使用Python线程来执行CPU受限的工作。在这种情况下,必须使用multiprocessingmultiprocessing由于通信开销,子进程可能无法100%地工作在给定的CPU核心上。为了最大限度地减少通信开销,请将工作分配给子进程,而不是将工作分配给较小的子进程。在

相关问题 更多 >