将请求结果列表传递给多进程

Passing request result list into Multiprocess

正如标题所说,我正在尝试将 requests.get() 结果中的列表传递给多进程。该脚本工作正常,除了;即使已经使用 start().

触发,Multiprocess 也不会 运行ning

这是我使用的脚本:Code Example

我试过的是;将变量传递给多进程:

global headers, domainlist

它仍然不会 运行 多进程,终端也不会产生任何错误消息并且让我感到困惑,因为多进程触发器很好。对不起英语不好...

多线程是这种情况的理想选择,因为它受 I/O 限制。这是 OP 原始代码的精简但功能齐全的变体,演示了如何完成此操作:

from concurrent.futures import ThreadPoolExecutor
import requests
import re

HACKERTARGET = 'https://api.hackertarget.com/hostsearch'
SCHEME = 'http://'

valid_domains = []

def process(domain):
    try:
        url = f'{SCHEME}{domain}'
        print(f'Checking -> {url}')
        requests.get(url, timeout=1.0, allow_redirects=False).raise_for_status()
        valid_domains.append(url)
    except Exception as e:
        pass

domain = input('Enter domain (without scheme): ')

try:
    (r := requests.get(HACKERTARGET, params={'q': domain})).raise_for_status()
    with ThreadPoolExecutor() as executor:
        executor.map(process, re.findall("(.*?),", r.text))
    print(valid_domains)
except Exception as e:
    print(e)