如何在for循环中创建线程

问题描述 投票:0回答:1

实际上我正在编写一个python脚本来自动化测试,并且这些测试基于“Nmap脚本”。 所以当我为 20 个端口扫描编写这些脚本时,每个端口需要 20 秒来扫描,因此对于 100 个端口需要太多时间, 我只想在 for 循环中创建一个线程,以便所有迭代同时工作。所有端口扫描仅需 20 秒 示例-

for ports in range(10,100):
      nmap_code = 'nmap -Pn -sV -sC -A -p'+ports
      os.system(nmap_code)

在上面的脚本中,每个端口都需要 20 秒来扫描,但我希望,使用多线程或 python 子进程或任何方法,所有端口在 20 秒内得到扫描

请帮我解决这个问题 谢谢

我在很多网站和 youtube 上搜索过,但无法得到明确的解释或想法 我得到的代码和文档很少,但没有帮助,

因为我对这个脚本非常陌生

python-3.x automation subprocess python-multithreading
1个回答
0
投票

首先,您不应该利用我们来帮助您解决问题。自己做研究,找到自己的答案。还请修正你的语法!

import threading
import os


def ping(port: str) -> None:
    nmap_code = 'nmap -Pn -sV -sC -A -p'+port
    os.system(nmap_code)


if __name__ == '__main__':
    for port in range(10,100):
        threading.Thread(target=ping, args=(str(port),)).start()

这应该可行,但要获得更“准确”的代码,请务必阅读有关线程的文档,在here找到它。

有任何问题请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.