2012-09-10 2 views
0

DB의 데이터를 CSV 파일로 추출하는 Python 스크립트가 있습니다. pyodbc을 사용하여 DB에 액세스하고 쿼리를 실행합니다. 스크립트는 데이터베이스의 모든 테이블을 출력데이터베이스의 비동기 csv.writer

with open(source_filename, 'w', newline='') as source_file: 
    csv.writer(source_file, quoting=csv.QUOTE_NONNUMERIC).writerows(db_cursor) 

때문에 난 후 백그라운드 처리 대신 중 하나를 사용하여 추출을 가속화 할 것 : 나는 또한 파일로 출력 쿼리를 csv.writer 사용하고 있습니다 다른. 파이썬에서이 작업을 수행 할 수있는 방법이 있습니까?

멀티 프로세싱을 사용해 보았지만 일부 산란 오류가 발생하지 않았습니다.

감사

+0

공유 리소스 스레딩에 매우주의해야합니다. –

답변

2

Multithreading는 병렬 처리를 달성하기 위해 가벼운 무게의 방법이지만 문서가 말한대로, 는 "스레딩 순차적으로 의존하지 않는 작업 디커플링하는 기술입니다." 병렬로 수행 할 작업을 결정하려면 종속성이 어디에 있는지 알아야합니다. 단일 디스크 저장소가 지원하는 데이터베이스에 여러 쿼리를 동시에 제출하면 결과를 순차적으로 제출하는 것보다 더 빨리 결과를 반환한다는 것은 분명하지 않습니다.

0

      멀티 스레드 프로세스를 만들어야합니다. 원래 프로세스는 db 액세스 및 파일 쓰기를 수행하는 새 스레드를 시작하고 원래 프로세스는 계속 비즈니스를 진행합니다.
      또한 동일한 데이터를 검색하기 위해 데이터베이스에 액세스하는 여러 프로세스를 만드는 대신 단일 백그라운드 프로세스를 사용하십시오. 더 안전하고 빠르며 디버깅하기가 쉽습니다.