Python kod optimize yardım

merhaba biraz chat gpt biraz ben bi şekilde kod yazdım ama çok fazla bilgisayar kullanıyo optimizasyon sıfır kendim 20 tarayıcı açınca sıkıntı yok ama bu kodda cpu nun tamamını kullanıo yardım ederminizz

import requests
import threading
from threading import Thread
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
import time

def check_proxy(proxy, working_proxies):
    try:
        response = requests.get('https://www.twitch.tv/', proxies={'http': proxy, 'https': proxy}, timeout=10)
        if response.status_code == 200:
            print(f"{proxy} is working")
            working_proxies.append(proxy)
    except:
        print(f"{proxy} is not working")

def start_viewbot(nick, izleyici, proxy_list):
    drivers = []
    options = webdriver.EdgeOptions()

    for proxy in proxy_list:
        options.add_argument('--proxy-server={}'.format(proxy))
        driver = webdriver.Edge(options=options)
        try:
            driver.get(f'https://www.twitch.tv/{nick}')
        except WebDriverException as e:
            print(f"Error connecting to {nick} with proxy {proxy}: {e}")
            driver.quit()
            continue

        drivers.append(driver)

    time.sleep(40)
    for driver in drivers:
        try:
            driver.quit()
        except WebDriverException:
            pass

def start_bot():
    nick = "gralkan"
    izleyici = int(20)

    while True:
        # API'den proxy adreslerini al
        url = "https://api.proxyscrape.com/v2/"
        querystring = {"request": "displayproxies", "protocol": "http", "timeout": "1000", "country": "all", "ssl": "all",
                       "anonymity": "all"}
        response = requests.request("GET", url, params=querystring)
        proxies = response.text.strip().split('\r\n')

        working_proxies = []

        threads = []
        for proxy in proxies:
            thread = threading.Thread(target=check_proxy, args=(proxy, working_proxies))
            thread.start()
            threads.append(thread)

        for thread in threads:
            thread.join()

        print(f"Total {len(proxies)} proxies checked, {len(working_proxies)} working proxies found")

        if len(working_proxies) > 0:
            proxy_list = working_proxies
        else:
            proxy_list = proxies

        threads = []
        for i in range(izleyici):
            t = Thread(target=start_viewbot, args=(nick, 1, proxy_list[i:i + 1]))
            threads.append(t)
            t.start()

        for thread in threads:
            thread.join()

        time.sleep(40)

start_bot()

while True:

Ölümcül hata, sonsuza dek devam et diyorsun. Peki sonsuza dek neye devam etsin?

Her döngüde 20 tane izleyici. Her döngüde 20 tane daha izleyici ve sonsuza kadar 20 şer 20 şer thread başlatıyorsun sanki.

Yani sistemindeki bütün kaynaklar bitene kadar 20’şer thread oluşturan bir kod olmuş gibi.

Ben olsam 20 ile sınırlar her seferinde 20 thread daha başlatmazdım.

benim amacım proxy çekiyo o proxylere bağlanarak 20 tane tarayıcı açsın 15dk o tarayıcılar açık kalsın sonra kapansın proxy çektiğim api 15dk da bir yenilii proxyleri bidaha çekicek proxy sonra tekrar açsın 20 tarayıcı bu kadar ama ben kendim 20 tarayıcı açınca bu kadar cpu kullanmıyo kod çalışınca cpu yu tam gaz kullanıyo ve bilgisayar kullanılmaz oluyo

Bir kez daha anlatmaya çalışayım.

Amacınızı anladık ama kodu yaptığı; 20 tane açmak değil, her while döngüsünde 20 tane daha thread açarak eklemek bu durumda saniyede yüzlerce kez while döngüsünde 20 şer 20 şer belki de binlerce thread açıyorsunuz.

Google a thread sayısı sınırlama yazsanız sorununuzu çözersiniz.