저는 도메인 목록을 읽고, Mcafee의 Siteadvisor 서비스가 제공하는 등급을 찾아서 도메인과 결과를 CSV로 출력하는 파이썬 스크립트를 작성하고 있습니다.이 다중 스레드 Python 스크립트를 어떻게 수정합니까?
나는 내 스크립트를 this previous answer에서 삭제했습니다. 그것은 urllib을 사용하여 문제의 도메인에 대한 Siteadvisor의 페이지를 긁습니다 (최선의 방법은 아니지만 Siteadvisor는 대안을 제공하지 않습니다). 불행하게도, 실패 아무것도 생산하는 - 내가 지속적으로이 오류 : 어떤 도움을 크게 감상 할 수
import threading
import urllib
class Resolver(threading.Thread):
def __init__(self, address, result_dict):
threading.Thread.__init__(self)
self.address = address
self.result_dict = result_dict
def run(self):
try:
content = urllib.urlopen("http://www.siteadvisor.com/sites/" + self.address).read(12000)
search1 = content.find("didn't find any significant problems.")
search2 = content.find('yellow')
search3 = content.find('web reputation analysis found potential security')
search4 = content.find("don't have the results yet.")
if search1 != -1:
result = "safe"
elif search2 != -1:
result = "caution"
elif search3 != -1:
result = "warning"
elif search4 != -1:
result = "unknown"
else:
result = ""
self.result_dict[self.address] = result
except:
pass
def main():
infile = open("domainslist", "r")
intext = infile.readlines()
threads = []
results = {}
for address in [address.strip() for address in intext if address.strip()]:
resolver_thread = Resolver(address, results)
threads.append(resolver_thread)
resolver_thread.start()
for thread in threads:
thread.join()
outfile = open('final.csv', 'w')
outfile.write("\n".join("%s,%s" % (address, ip) for address, ip in results.iteritems()))
outfile.close()
if __name__ == '__main__':
main()
:
Traceback (most recent call last):
File "multi.py", line 55, in <module>
main()
File "multi.py", line 44, in main
resolver_thread.start()
File "/usr/lib/python2.6/threading.py", line 474, in start
_start_new_thread(self.__bootstrap,())
thread.error: can't start new thread
여기 내 스크립트입니다.
디버깅 해보십시오. –
몇 개의 스레드를 만들고 있습니까? –