저는 응용 프로그램 (x64)에서 스크립팅 환경으로 임베드 된 Python 3.1.4를 사용하고 있습니다. 지금까지 나는 임베디드 파이썬에 많은 한계가있었습니다. 나는 그것이 정상적인 것인지 또는 애플리케이션의 프로그래머가 일부 기능을 차단했는지 알 수 없다.임베디드 Python : 멀티 프로세싱이 작동하지 않습니다.
예를 들어 다음과 같은 코드가 작동하지 않습니다 :
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
# --> error in forking.py: 'module' object has no attribute 'argv'
# print(sys.argv) gives the same error
sys.executable
반환 응용 프로그램의 경로입니다.
나는 아으로 이것을 시도했다 : 성공없이
multiprocessing.forking.set_executable('C:\Python31\python.exe')
multiprocessing.set_executable('C:\Python31\python.exe')
.
가능한 해결 방법이 있습니까? 응용 프로그램 개발자가 코드에서 무언가를 바꿀 수있는 영향력을 가지지는 않을 것입니다.
감사
편집
나는 다음과 같은 추가 작업을 얻었다 :
sys.argv = ['c:/pathToScript/scipt.py']
은 나뿐만 아니라이 줄을 필요 :
multiprocessing.set_executable('C:/Python31/python.exe')
그렇지 않으면 코드를 실행하는 대신 응용 프로그램의 다른 인스턴스가 열립니다.
유일한 문제는 응용 프로그램 자체를 제어하는 메서드 (예 : create_project(), add_report())를 사용할 수 없다는 것입니다. 나의 주요 목표는 첫 번째 목표가 완료 될 때까지 기다릴 필요없이 여러 메소드를 호출하는 것이 었습니다. 그러나 나는 이것이 불가능하다고 생각합니다. 기본적으로
멀티 프로세싱 대신 스레딩을 사용 하시겠습니까? –
어느 OS입니까? ...... – NPE
@ Ionut Hulub : 나는 실을 꿰기에 문제가 있습니다. 나는 GIL으로 무언가를 추정합니다. 이것이 멀티 프로세싱을 시도한 이유입니다. @ NPE : Windows 7, 64bit –