Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 重复使用connect()时如何提高效率?_Python_Performance_Sockets_Connect_Brute Force - Fatal编程技术网

Python 重复使用connect()时如何提高效率?

Python 重复使用connect()时如何提高效率?,python,performance,sockets,connect,brute-force,Python,Performance,Sockets,Connect,Brute Force,我希望对Apache授权使用快速暴力测试,而不使用urllib或套接字库编码。但是,connect()是一项非常慢的任务(400/m) 重复使用connect()函数时,如何提高效率 (没有多进程方法;仅在代码级别) 您可以使用线程池。查看multiprocessing.pool.ThreadPool包。您可以创建一个大小为N的池,然后在for循环中使用imap_unordered()来连接、发送和接收每个线程 您也可以将multiprocessing.pool.pool用于进程池(相对于线程)

我希望对Apache授权使用快速暴力测试,而不使用urllib或套接字库编码。但是,connect()是一项非常慢的任务(400/m)

重复使用connect()函数时,如何提高效率 (没有多进程方法;仅在代码级别)


您可以使用线程池。查看multiprocessing.pool.ThreadPool包。您可以创建一个大小为N的池,然后在for循环中使用imap_unordered()来连接、发送和接收每个线程

您也可以将multiprocessing.pool.pool用于进程池(相对于线程),但听起来这是I/O绑定的,所以线程池会更好,IMHO

例如:

from multiprocessing.pool import ThreadPool as Pool
import random
import time

def do_something(x):
    delay = random.randint(1,3)
    time.sleep(delay)
    return x,delay

for i, result in pool.imap_unordered(do_something, range(10)):
    print i, result

HTTP中的行终止符是\r\n,而不是\n。
from multiprocessing.pool import ThreadPool as Pool
import random
import time

def do_something(x):
    delay = random.randint(1,3)
    time.sleep(delay)
    return x,delay

for i, result in pool.imap_unordered(do_something, range(10)):
    print i, result