我检查我的客户国家,以便我知道我可以提供哪些服务布拉布拉布拉。。。。。。 所以问题是线程阻塞,例如它检查15-20和阻塞,我想要一个解决方案来保持它继续 代码是:
import requests
import re
from sys import argv
from Queue import Queue
from threading import Thread
e = argv[1]
emails = open(e, 'r').readlines()
emails = map(lambda s: s.strip(), emails)
valid=[]
def base(email):
xo = requests.get("http://www.paypal.com/xclick/business="+email, headers={"User-Agent":"Mozilla/5.0 (Windows NT 5.0; rv:21.0) Gecko/20100101 Firefox/21.0"}).text
x = re.search("s.eVar36=\"(.*?)\";", xo)
try:
if x.group(1) != "":
print "%s === %s" % (email,x.group(1))
w=open(str(x.group(1))+".txt", 'a')
w.write(email+"\n")
valid.append(email)
except:
pass
def work():
email=q.get()
base(email)
q.task_done()
THREADS = 25
q=Queue()
for i in range(THREADS):
t=Thread(target=work())
t.daemon=True
t.start()
if (len(argv)>0):
for email in emails:
q.put(email)
q.join()`enter code here
提前谢谢
问题是在创建线程时调用
work()
,而不是传递work
函数。与其在代码中进行更改,不如考虑移动python的ThreadPool
,这将为您带来繁重的负担。下面是一个实现所需内容的示例。你知道吗map
为迭代器中的每封电子邮件调用您的工作者,并以迭代器(python3)或列表(python2)的形式返回工作者的结果。你的工作人员会为每封邮件返回一封有效的邮件,或者不返回任何邮件,所以你只需要在最后过滤掉那些不存在的邮件。你知道吗相关问题 更多 >
编程相关推荐