2012-01-19 2 views
2

urllib2로 상대적으로 큰 파일 (각각 10MB)을 다운로드 한 다음 json 파일로로드하고 mysql 데이터베이스에 데이터를 삽입 한 다음 무한 루프. 다운로드에는 1 분 정도 걸리며, 모든 것을 mysql에로드한다. 주 스레드가 파이썬을 사용하여 MySQL에 삽입하는 동안 다운로드를 수행하는 스레드를 만드는 방법이 있습니까?파일을 동시에 다운로드하고 파이썬으로 mysql 데이터베이스에 삽입하기

내 의사 :

while 1: 
download file with urllib2 
decode as json file 
extract data I want 
do some computations on data 
insert data into mysql 

너무 감사합니다!

+0

트위스트를. 비틀기는 항상 해답입니다. –

+0

Twisted (Ignacio가 말했듯이) 또는 Tornado는 비동기입니다. –

답변

2

스레드 및 대기열을 사용하면됩니다. 파일 IO 스레드는 파일을 읽고 처리 한 다음 결과를 큐에 삽입합니다. 여기서 데이터베이스 IO 스레드는 결과를 발견하고 작업을 수행합니다. http://www.ibm.com/developerworks/aix/library/au-threadingpython/

는 다른 방법으로 여러 파일을 관리하기 위해 파이썬 select 모듈을 사용할 수있는 작업을 읽고 그들에게 완료로 하나씩 처리 : 예를 코드보다 오히려, 나는 당신을 지시 할 것이다 http://docs.python.org/library/select.html

+0

멀티 프로세싱 (또는 프로세스 풀) 콜드가 더 안전 할 수도 있습니다. –

+0

여러 프로세서가 유용 할 때 좋은 점 : CPU 바운드 작업. IO 바운드 상황에서 여분의 프로세서는 걱정하지 않습니다. IO를 차단하지 않는 것이 좋습니다. – philofinfinitejest

+0

굉장한, 내가 찾고있는 것. 그래서 난 그냥 내 자신의 코드로 주어진 예제에서 "실행"함수를 수정해야합니까? – jh314

관련 문제