【问题标题】:How to use threading with a list and assign workers?如何将线程与列表一起使用并分配工作人员?
【发布时间】:2019-10-10 18:12:06
【问题描述】:

我正在使用 Python 请求来检查代理是否正常工作。我将它们加载到 IP:PORT 格式的 .txt 文件中。然后,我使用 Threading 模块设置了线程,并且它可以工作。一个问题 - 它在每个线程上运行在相同的 IP:PORT 上。一旦所有线程都完成了第一行,它就会移动到第二行。我想让每个线程尝试不同的 IP:PORT,直到所有线程都被检查。

我四处寻找,但找不到我要找的东西。我实际上已经坚持了几个星期。

import requests
import threading

def ip():

    with open('ip_found.txt', 'r') as i:
        iport = [x.strip().split(':', 1) for x in i]

   postIt = { 'ip' : ip, 'port' : port }

    r1 = requests.post(URL"",data=postIt)

for _ in range(2):
    for ip, port in iport:
        t1 = threading.thread(target=ip)
        t1.start()
        t2 = threading.thread(target=ip)
        t2.start()

【问题讨论】:

标签: python multithreading python-requests


【解决方案1】:

我在这里看到了问题,我也看到了另一个潜在的问题。

这样做的一种方法是首先读取 IP:PORT 并将它们存储到队列中。这样,您的线程不会在同一个 IP:Port bc 上重叠,每个线程将从第一个开始。 (确保使用互斥锁/锁)

我看到的另一个问题是您没有跟踪您的线程。我所看到的只是你创建了两个线程,启动它们,然后在 for 循环迭代时忘记它们。这段代码可能不是真正的问题,因为 ping IP:Port 对于单个线程来说可能不会花费很多时间,但如果你的函数开始膨胀,你可能会遇到问题。

【讨论】:

  • 你能给我举个例子吗?我再次尝试了解如何创建队列,拆分 IP:PORT 并确保每个工作人员都在尝试不同的线路
猜你喜欢
  • 2018-06-02
  • 1970-01-01
  • 2012-05-01
  • 2015-12-07
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
相关资源
最近更新 更多