本帖最后由 a情授001 于 2020-11-10 22:24 编辑
希望大佬指出毛病,或者大佬们有更好的思路。参考了pyec的多线程更改的[Python] 纯文本查看 复制代码 import sys,traceback,threading,time
def get(u,p):
print('账号:'+u,'密码:'+p)
time.sleep(2)
def 多线程(线程数, 最长等待时间=0, 跟随主线程结束=False):
n = 0
u = ['a123-a456','b123-b456','c123-c456','d123-d456']
任务数 = len(u)
__多线程列表 = []
剩余数 = 任务数
try:
while 剩余数 > 0:
名字 = u[n].split('-')[0]
密码 = u[n].split('-')[1]
xkz = threading.Lock()
for x in __多线程列表:
if x.is_alive() == False:
__多线程列表.remove(x)
if len(__多线程列表) >= 线程数:
time.sleep(0.1)
else:
xkz.acquire()
线程 = threading.Thread(target=get, args=(名字, 密码), daemon=跟随主线程结束)
线程.start()
__多线程列表.append(线程)
剩余数 -= 1
n += 1
xkz.release()
for i in __多线程列表:
if 最长等待时间 <= 0:
i.join()
else:
i.join(最长等待时间)
return True
except:
print("{}|运行出错\r\n{}\r\n".format(sys._getframe().f_code.co_name, traceback.format_exc()))
return False
def main():
s = time.time()
多线程(4)
e = time.time()
print(e-s)
main()
|