Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3-Multiprocessing-Queue.get()没有响应_Python_Python 3.x_Queue_Multiprocessing_Core - Fatal编程技术网

Python 3-Multiprocessing-Queue.get()没有响应

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()

我想进行蛮力攻击,因此需要一些速度。。。所以我开始使用多处理库。。。然而,在我发现的每一篇教程中,都有一些东西不起作用。。。。陛下这个函数似乎工作得很好,只是每当我调用get()函数时,idle似乎会进入睡眠状态,它根本没有响应。我只是傻了还是怎么了?我只是复制粘贴的例子,所以它应该已经工作

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())]来获取队列中的所有项