나는 간단한 것을 놓치고 싶지만, 서브 프로세스 모듈을 사용할 때는 첫 번째 서브 프로세스를 시작하는 데 매우 중요한 대기 시간 (> 10 초)이있다. . 두 번째 것은 첫 번째 직후에 시작됩니다. 이 문제를 해결할 방법이 있습니까? 아래 코드 :파이썬 : 서브 프로세스의 첫 번째 인스턴스 .Popen()이 매우 느리다.
EDIT : 추가하려면 HWAccess (proc.py)가 dll을 연결합니다. 이것과 관련이 있을까요? EDIT2 : 테스트를 하나의 하위 프로세스로 시작 했으므로 cmd 프롬프트에서 직접 proc.py를 실행하는 것보다 HWAccess를 가져 오는 데 훨씬 오래 걸립니다. 나는 test.py
test.py를 통해 아니라 하위 프로세스로, 그것은 cmd를에서 빠르게로드하는 경우이 특별히 DLL과 아무 상관이 표시되지 않습니다 :
import subprocess
import os
import time
print 'STARTING'
proc0 = subprocess.Popen(['python','proc.py','0'])
proc1 = subprocess.Popen(['python','proc.py','1'])
while True:
try: pass
except KeyboardInterrupt:
os._exit(0)
except ValueError:
pass
시저를. 평 :
print 'Process starting...'
import HWAccess
print 'HWAccess imported...'
import sys
print 'sys imported...'
import time
print 'time imported...'
print 'hi from ',sys.argv[1]
편집 : 5 초 첫 번째에 도달하는 주위의 지문을 넣어 한 후,이 '프로세스의 시작을 ...', 두 번째 프로세스 인쇄 '프로세스가 시작 ...'직후. 그런 다음 HWAccess를 가져 오는 데 30 초의 일시 중지가 있습니다 (개별 프로세스에서 몇 초 만에 실행됩니다). 두 번째 프로세스는 즉시 HWAccess를 가져 왔습니다. HWAccess는 .dll을 링크하므로 HWAccess 가져 오기를 시도하는 두 프로세스가 협상에 약간의 시간이 걸리는 경쟁 조건이 발생하는지 궁금합니다.
다른 프로세스를 사용하여 다른 Python 스크립트를 호출하려는 이유가 무엇입니까? 스크립트를 임포트하려면'import'를 사용하십시오. – kurumi
10 초 지연의 원인이되는 서브 프로세스 코드에 대해서는 아무 것도 없습니다. HWAccess는 비싸거나 시간에 민감한 초기화가 있습니까? 스크립트를 직접 실행할 때'proc.py '가 얼마나 오래 인쇄물에 도달하는데 시간이 걸립니까? – samplebias
HWAccess는 클래스 모음입니다. 그러나 정상적인 프로세스로 실행하면 오히려 빨리 가져옵니다 (클래스 중 하나를 인스턴스화하는 데 다소 시간이 걸리지 만 proc.py의 맨 위에 인쇄하여 서브를 시작하는 오버 헤드를 확인합니다). -방법). –