2009-07-01 4 views
4
내가 프로그램을 수행 할이 과정 같은 스폰을 원하는

와 파이썬 -> N 과정 - 멀티와> N 과정멀티 더 다음 2 단계

수있는 두 번째 수준의 산란 과정? vilalian의 대답 @ 파이썬 2.6

thnx

+0

이렇게하고 싶은 특별한 이유가 있습니까? – SingleNegationElimination

+0

내 프로그램에이 구조가 필요합니다, controler -> 프로세스 디스패처 -> n 프로세스 – waldecir

답변

3

의 multiprocessinf 모듈을 사용하여 정확하지만 간결하다. 물론 원래 질문이 모호 할 때 더 많은 정보를 제공하기가 어렵습니다.

는 원래의 프로그램이 n 프로세스를 생성 거라고, 조금 확장하려면,하지만 그들은 당신이 (내가 당신의 질문을 이해하면 각)들이 n를 생성 할 거라고 원래보다 약간 다른 것 더 많은 프로세스. 당신은 원래 프로세스와 비슷한 코드를 실행하게함으로써이 작업을 수행 할 수 있었지만 추가 처리없이 바로 작업을 수행 한 새로운 프로그램 세트를 생성했거나 동일한 인수/코드를 사용하여 다른 인수를 제공 할 수있었습니다 - 당신이 할 수 물론 level == 2

0

def main(level): 
    if level == 0: 
     do_work 
    else: 
     for i in range(n): 
      spawn_process_that_runs_main(level-1) 

하고 시작 같은. 특히 fork를 사용하여 하위 프로세스를 생성하는 경우, 이들은 정상적인 프로세스 (예 : 아버지)로 작동합니다. 스레드 관리는 매우 다르지만 하위 수준의 "두 번째 수준"을 사용할 수도 있습니다.

두 레벨 스레드가있는 예제 프로그램은 일반적으로 사용되지 않으므로 프로그램을 복잡하게하지 않도록주의하십시오.

1

중첩 된 깊이로 대기열을 통해 통신하는 일련의 프로세스 풀로 앱을 구성 할 수 있습니다. 그것은 (아마도 필요한 컨텍스트 전환으로 인해) 꽤 털이 빨리 얻을 수 있지만.

확실하지만 확실하지는 않습니다.

multiprocessing의 문서는 매우 유용합니다.

Here (의견이 너무 많지 않음) 내 피드를 업데이트하는 프로그램의 처리량을 높이기 위해 사용하는 코드입니다. 나는 하나의 프로세스를 가져와야하는 피드를 폴링합니다. 그 결과는 큐의 결과로 4 명의 프로세스 풀이 결과를 선택하고 피드를 가져옵니다. 결과 (있는 경우)가 프로세스의 큐에 저장됩니다. 구문 분석하여 큐에 넣고 데이터베이스에 다시 저장합니다. 순차적으로 진행되는이 프로세스는 일부 사이트가 응답하기 위해 자신의 단 시간을 사용하기 때문에 실제로 느려질 수 있습니다. 따라서 프로세스가 인터넷에서 데이터를 기다리고 있으며 하나의 코어 만 사용하게됩니다. 이 프로세스 기반 모델에서 실제로 데이터베이스에서 기다리고있는 중이며 NIC는 대부분 포화 상태입니다. 물론 4 코어가 실제로 뭔가를하고 있습니다. 귀하의 마일리지가 다를 수 있습니다.

관련 문제