假设:有个数据操作,处理100万条数据,每个数据的value+1。如简单代码假设
for x in range(1,100): x++
从数据库获取100条了,然后想多进程去执行x++?还是说多进程去数据库获取数据?谢谢了
业精于勤,荒于嬉;行成于思,毁于随。
질문이 있습니다. 데이터베이스에 있는 데이터라면 sql을 실행하는 것이 멀티 프로세스보다 훨씬 효율적이지 않나요? 주어진 두 가지 옵션 중 하나를 선택해야 한다면, 그렇다면 다음을 고려해보세요:
먼저 생산자로서 원본 데이터를 큐(queue)에 저장합니다 그런 다음 소비자로서 큐에서 데이터를 가져오고 작업을 수행합니다 이때 여러 스레드를 열 수 있습니다. 소비자 (물론 당신은 잠금을 잘 처리하면 생산자도 멀티스레딩을 할 수 있습니다)
큐에 항상 요소가 있으면 스레드는 계속 작동합니다.
실제로 Python에서 다중 처리를 구현하는 가장 좋은 방법은 multiprocessing에서 map
multiprocessing
map
예(Python 3):
위에서 언급한 프로세스 풀처럼 데이터 읽기와 데이터 +1이라는 두 가지 기능을 하나의 작업으로 직접 작성한 다음 여러 프로세스를 사용하여 작업할 수 있습니다. CPU 코어 수에 따라 프로세스 풀의 크기를 설정하십시오. 여러 프로세스 간에 메모리 공유나 직접 통신이 없으므로 먼저 여러 프로세스를 사용하여 데이터베이스의 모든 데이터를 읽은 다음 여러 프로세스를 사용하여 val+1을 수행할 수 있습니다
질문이 있습니다. 데이터베이스에 있는 데이터라면 sql을 실행하는 것이 멀티 프로세스보다 훨씬 효율적이지 않나요?
으아아아주어진 두 가지 옵션 중 하나를 선택해야 한다면, 그렇다면 다음을 고려해보세요:
먼저 생산자로서 원본 데이터를 큐(queue)에 저장합니다
으아악그런 다음 소비자로서 큐에서 데이터를 가져오고 작업을 수행합니다
이때 여러 스레드를 열 수 있습니다. 소비자 (물론 당신은 잠금을 잘 처리하면 생산자도 멀티스레딩을 할 수 있습니다)
큐에 항상 요소가 있으면 스레드는 계속 작동합니다.
실제로 Python에서 다중 처리를 구현하는 가장 좋은 방법은
을 사용하는 것입니다.multiprocessing
에서map
예(Python 3):
으아악 으아악위에서 언급한 프로세스 풀처럼 데이터 읽기와 데이터 +1이라는 두 가지 기능을 하나의 작업으로 직접 작성한 다음 여러 프로세스를 사용하여 작업할 수 있습니다. CPU 코어 수에 따라 프로세스 풀의 크기를 설정하십시오. 여러 프로세스 간에 메모리 공유나 직접 통신이 없으므로 먼저 여러 프로세스를 사용하여 데이터베이스의 모든 데이터를 읽은 다음 여러 프로세스를 사용하여 val+1을 수행할 수 있습니다