簡體   English   中英

如何將線程與列表一起使用並分配工作人員?

[英]How to use threading with a list and assign workers?

我正在使用 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()

我在這里看到了問題,我也看到了另一個潛在的問題。

一種方法是先讀取 IP:PORTs 並將它們存儲到隊列中。 這樣,您的線程不會在同一個 IP:Port bc 上重疊,每個線程將從第一個線程開始。 (確保使用互斥鎖/鎖)

我看到的另一個問題是你沒有跟蹤你的線程。 我所看到的只是你創建了兩個線程,啟動它們,然后在 for 循環迭代時忘記它們。 此代碼可能不是真正的問題,因為 ping IP:Port 可能不會為單個線程花費很多時間,但如果您的 function 開始膨脹,您可能會遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM