저는 파이썬과 멀티 스레딩을 처음 접했으므로 저와 함께하시기 바랍니다.Python 멀티 스레딩을 통한 성능 향상 방법
"신뢰도"의 척도로 웹 사이트의 순위를 결정하고 CSV에 쓰는 서비스 인 Web of Trust를 통해 목록의 도메인을 처리하는 스크립트를 작성하고 있습니다. 안타깝게도 Web of Trust의 서버는 응답하는 데 꽤 오래 걸릴 수 있으며 100,000 개의 도메인을 처리하는 데 몇 시간이 걸릴 수 있습니다.
지금까지 멀티 스레딩 시도가 실망 스러웠습니다. this answer에서 스크립트를 수정하면 스레딩 오류가 발생했지만 일부 스레드는 해결하기가 너무 오래 걸리기 때문에 믿습니다.
여기 내 수정되지 않은 스크립트가 있습니다. 누군가가 다중 스레드를 도와 주거나 좋은 다중 스레드 리소스를 가르쳐 줄 수 있습니까? 미리 감사드립니다.
import urllib
import re
text = open("top100k", "r")
text = text.read()
text = re.split("\n+", text)
out = open('output.csv', 'w')
for element in text:
try:
content = urllib.urlopen("http://api.mywot.com/0.4/public_query2?target=" + element)
content = content.read()
content = content[content.index('<application name="0" r="'):content.index('" c')]
content = element + "," + content[25] + content[26] + "\n"
out.write(content)
except:
pass
GIL (예 : Python C 확장자 작성)을 사용하지 않는 한 파이썬에서의 스레딩은 종종 씻겨집니다. 위의 경우 IO 블록에서 보낸 시간 때문에 정상적으로 작동 할 수 있습니다 ... 어쨌든, 꼬인 대신 (단일 스레드) 이벤트 프레임 워크를 사용 했습니까? –
내 서버에서 실행되지 않기 때문에 타사 프레임 워크를 설치하지 않고이 작업을 수행하는 것이 좋습니다. – Tom
예상대로 WOT는 데이터베이스를 그런 식으로 복사하는 것을 좋아하지 않으므로 요청 (http://www.mywot.com/pl/terms/api)을 막기 시작할 수 있습니다 ... 아마도 당신 상용 서비스를 사용해야합니까? – mbq