记录下Python多线程的几种用法

第一种threading

这种如果一下启动的数量太多,会报错.

找了很多相关的资料,有说跟机器性能有关,有说改文件。

还有就是说跟Queue结合着用,反正我是用不来

上一个工具爆破mysql就是用的这种

import threading

t = threading.Thread(target=mysql_login, args=(host, user, pwd, port))
t.start()

 

第二种Pool

线程池,并发,根据提供的线程池大小启动

  1. from multiprocessing import Pool
  2. p = Pool(50)
  3. for host in hostlist:
  4. for user in userlist:
  5. for pwd in pwdlist:
  6. p.apply_async(mysql_login,args=(host, user, pwd, port))
  7. p.close()
  8. p.join()

第三种

类似Pool,不知道怎么解释

好像就是pp.join的时候,前面线程没执行完就等待

  1. import multiprocessing
  2.  
  3. for host in hostlist:
  4. for user in userlist:
  5. for pwd in pwdlist:
  6. pp =multiprocessing.Process(target=mysql_login,args=(host, user, pwd, port))
  7. threads.append(pp)
  8. pp.start()
  9. pp.join()

 

发表评论

邮箱地址不会被公开。 必填项已用*标注