я пытаюсь ограничить этот цикл до 4 одновременных заданий:
def testSSH(host, user, password, port):
s = pxssh.pxssh()
try:
if not s.login (host, username=user, password=password, port=port):
print(password)
return False
else:
print(password)
return True
except:
print(password)
return False
passes = "r", "1234", "12345", "123456!", "1234567", "a", "b", "e", "s", "A", "d", "66"
jobs = []
for passw in passes:
thread = threading.Thread(target=testSSH, args=("localhost", "myuser", passw, "22",))
jobs.append(thread)
for j in jobs:
print(threading.active_count())
j.start()
for j in jobs:
j.join()
код работает нормально. однако я не могу ограничить одновременные задания. threading.active_count() всегда является значением проходов. какие-нибудь советы? я пробовал этот вопрос, но ничего не вышло Спасибо!
Возможный дубликат Правильный способ ограничить максимальное количество потоков, работающих одновременно?
можете ли вы прислать пример использования семафоров в коде, подобном этому?






ОК, ребята, я нашел кое-что сам:
threads = 0
def testSSH(host, user, password, port):
s = pxssh.pxssh()
try:
if not s.login (host, username=user, password=password, port=port):
print(password)
return False
else:
print(password)
return True
except:
print(password)
return False
passes = "r", "1234", "12345", "123456!", "1234567", "a", "b", "e", "s", "A", "d", "66"
jobs = []
for passw in passes:
thread = threading.Thread(target=testSSH, args=("localhost", "myuser", passw, "22",))
jobs.append(thread)
for j in jobs:
threads = threading.active_count()
while threads > 4:
time.sleep(0.05)
threads = threading.active_count()
j.start()
for j in jobs:
j.join()
надеюсь, это поможет кому-то в будущем...
для ограничения ресурсов, подобных этому, не могли бы вы использовать семафоры?