gpt4 book ai didi

python - 使用 python 进行多线程?

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:02 28 4
gpt4 key购买 nike

我写了一个脚本来猜测一个 pin,它有点管用,但脚本忽略了 sleep 命令,而且命令 threading.lock() 也不起作用。那么你能看一下我的脚本并告诉我如何才能使我的脚本更好吗?

#!/usr/bin/env python -w 
#
#
import time
import random
import os
import threading
import sys


lock = threading.Lock()
def Random(name,repeat):
lock.acquire
while repeat != 0:
Pin = random.randint(0,9999)
print "[+] Trying: %d"%Pin;time.sleep(3)
if Pin == 5656:
os.system("clear");print '[+] Pin Found: %d' %Pin;time.sleep(3)
sys.exit()
repeat-= 1

if lock.acquire():
lock.release()


def Order(name,repeat):
lock.acquire

while repeat != 0:
Pin = random.randint(0,9999)
print "[!] Trying: %d"%Pin;time.sleep(3)

if Pin == 5656:
os.system("clear");print '[+] Pin Found: %d' %Pin;time.sleep(3)
sys.exit()
repeat-= 1



if lock.acquire():
lock.release()




def Main():
Brute_1 = threading.Thread(target=Random,args=('Random_Guess',10))
Brute_2 = threading.Thread(target=Order,args=('Order_Guess',10))
Brute_1.start()
Brute_2.start()


if __name__=='__main__':
Start = raw_input("Press Enter To Start")
while 1:
os.system("clear");
Main()

最佳答案

list 末尾的 while 循环每次都会创建两个新线程。 sleep 函数由新线程而不是主线程调用,因此主线程将尽可能快地完成 while 循环。这将产生成千上万的新线程,直到系统崩溃。您认为 sleep 功能不起作用,但它当然起作用了;只是每当您在控制台上看到一行时,它就是新线程的第一个猜测。我不认为那是你想要的。我不知道您要做什么,所以我无法提供进一步的帮助。

此外,正如 pasztorpisti 所暗示的,lock.acquire 是一个函数,需要使用函数调用语法 (lock.acquire()) 进行调用,否则什么也不会发生。话虽如此,您需要先清理高层结构。

一旦你获得了一个锁,其他线程在尝试获得同一个锁时就会被阻塞。 time.sleep 函数不会释放锁,因此只要线程 1 拥有锁,线程 2 就无法获取锁,即使线程 1 处于休眠状态。

关于python - 使用 python 进行多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36901441/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com