주 Pylons 프로세스의 무거운 계산을 위해 백그라운드 프로세스를 만들려고합니다. 여기에 코드입니다 :Pylons에서 호출 된 Process()가 포크를 만듭니다.
p = Process(target = instance_process, \
args = (instance_tuple.instance, parent_pipe, child_pipe,))
p.start()
과정이 만들어지고 시작됩니다,하지만 주요 과정에서 포크가 될 것으로 보인다 : 동일한 포트를 듣고 전체 응용 프로그램이 끊습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
미리 감사드립니다.
그렇다면 백그라운드 프로세스를 시작하는 가장 좋은 방법은 무엇입니까? 아니면 스레드를 시작하는 것이 더 좋을까요? 목표는 들어오는 명령을 기다리고 꽤 오랜 기간 동안 과중한 계산을 수행 할 수있는 사전 실행/스레드를 만드는 것입니다. –
파이썬 스레딩이 퇴화되었습니다. 파이썬 인터프리터는 한 번에 하나의 실행 스레드 만 실행하여 100 개의 명령 (정확하게)마다 스레드 간을 전환하고 전체 프로세스를 인쇄합니다 (python [GIL] (http://wiki.python.org/moin/ GlobalInterpreterLock)). 나는 파이썬에서 스레딩을 권장하지 않는다. 프로세스에 관해서는, 계산이 완료된 후에'p.terminate()'와'p.join()'을 사용하면된다. – immortal
이 계산은 많은 양의 데이터 (500-700 Mb)를 유발할 수 있으며, 사용자가 무언가를하고 싶을 때마다로드하는 것이 좋다. subprocess.Popen() 함수를 사용하여 프로세스를 시작하는 것은 무엇입니까? –