Python 3-Multiprocessing-Queue.get()没有响应
我想进行蛮力攻击,因此需要一些速度。。。所以我开始使用多处理库。。。然而,在我发现的每一篇教程中,都有一些东西不起作用。。。。陛下这个函数似乎工作得很好,只是每当我调用get()函数时,idle似乎会进入睡眠状态,它根本没有响应。我只是傻了还是怎么了?我只是复制粘贴的例子,所以它应该已经工作Python 3-Multiprocessing-Queue.get()没有响应,python,python-3.x,queue,multiprocessing,core,Python,Python 3.x,Queue,Multiprocessing,Core,我想进行蛮力攻击,因此需要一些速度。。。所以我开始使用多处理库。。。然而,在我发现的每一篇教程中,都有一些东西不起作用。。。。陛下这个函数似乎工作得很好,只是每当我调用get()函数时,idle似乎会进入睡眠状态,它根本没有响应。我只是傻了还是怎么了?我只是复制粘贴的例子,所以它应该已经工作 import multiprocessing as mp import random import string # Define an output queue output = mp.Queue()
import multiprocessing as mp
import random
import string
# Define an output queue
output = mp.Queue()
# define a example function
def rand_string(length, output):
""" Generates a random string of numbers, lower- and uppercase chars. """
rand_str = ''.join(random.choice(
string.ascii_lowercase
+ string.ascii_uppercase
+ string.digits)
for i in range(length))
output.put(rand_str)
# Setup a list of processes that we want to run
processes = [mp.Process(target=rand_string, args=(5, output)) for x in range(2)]
# Run processes
for p in processes:
p.start()
# Exit the completed processes
for p in processes:
p.join()
# Get process results from the output queue
results = [output.get() for p in processes]
print(results)
@达诺击中了它的头!你没有
如果你有一个“叉形炸弹”。也就是说,每个进程都在运行这些进程,以此类推。您还将注意到,我已经移动了队列的创建
import multiprocessing as mp
import random
import string
# define a example function
def rand_string(length, output):
""" Generates a random string of numbers, lower- and uppercase chars. """
rand_str = ''.join(random.choice(
string.ascii_lowercase
+ string.ascii_uppercase
+ string.digits)
for i in range(length))
output.put(rand_str)
if __name__ == "__main__":
# Define an output queue
output = mp.Queue()
# Setup a list of processes that we want to run
processes = [mp.Process(target=rand_string, args=(5, output)) for x in range(2)]
# Run processes
for p in processes:
p.start()
# Exit the completed processes
for p in processes:
p.join()
# Get process results from the output queue
results = [output.get() for p in processes]
print(results)
发生的情况是,多处理
将每个子进程作为一个模块运行,因此\uuuuu name\uuuuuu
仅在父进程中是\uuuuu main\uuuuu
。如果没有,则每个子进程将(尝试)再启动两个进程,每个进程将再启动两个进程,依此类推。难怪空闲停止。我在尝试从空闲使用多处理时遇到问题,建议您从命令行尝试。您在什么平台上运行此操作?它在Linux上对我来说很好。对于Windows,您需要在进程=…
行上方添加if uuuu name\uuuuu==“\uuuuuu main\uuuuu”:
,然后将所有内容缩进该if块下。如果它仍然不起作用,您可能会看到IDLE的问题,如@cdarke所述。这将只显示输出(mp.Queue)中的前两个结果,您可以使用results=[output.get()for uu in range(output.qsize())]来获取队列中的所有项