내 프로젝트에서 argprse를 사용하여 인수를 전달하고 스크립트의 어딘가에서 다중 처리를 사용하여 나머지 계산을 수행합니다. 명령 프롬프트에서 호출하면 스크립트가 정상적으로 작동 함 예.Python 다중 처리가 argparse 및 pyinstaller에서 오류를 throw합니다.
"python complete_script.py --arg1=xy --arg2=yz
".
그러나 "complete_script.py --onefile pyInstaller 중에"명령을 사용하여 pyInstaller 중에를 사용하여 EXE 파일로 변환 후 오류
" error: unrecognized arguments: --multiprocessing-fork 1448"
내가이 일을 할 수있는 방법을 어떤 제안
가 발생합니다. 또는 다른 대안. 내 목표는 Python이 설치되지 않은 다른 시스템에서 호출 할 수있는 exe 응용 프로그램을 만드는 것입니다.
Platform: Windows 10
Python : 2.7.13 <installed using Anaconda>
multiprocessing : 0.70a1
argparse: 1.1
코멘트에서 복사 : 여기
내 워크 스테이션의 세부 사항입니다def main():
main_parser = argparse.ArgumentParser()
< added up arguments here>
all_inputs = main_parser.parse_args()
wrap_function(all_inputs)
def wrap_function(all_inputs):
<Some calculation here >
distribute_function(<input array for multiprocessing>)
def distribute_function(<input array>):
pool = Pool(process = cpu_count)
jobs = [pool.apply_async(target_functions, args = (i,) for i in input_array)]
pool.close()
이 힘 유용한 정보가 작동하려면 : [ '코드'] 데프 주() : main_parser = argparse.ArgumentParser() <까지 추가 인수 여기> all_inputs = main_parser.경우 parse_args() wrap_function (all_inputs) 데프 wrap_function (all_inputs) <몇 가지 계산> distribute_function (<멀티 프로세싱을위한 입력 배열>) 데프 distribute_function () 풀 = 풀 (프로세스 = CPU_COUNT) jobs = [pool.apply_async (input_array의 i에 대한 target_functions, args = (i))] pool.close() [ 'code'] –
'메인'은 언제 호출됩니까? 임포트시 또는'is __name __... '블록에 의해서만? – hpaulj
main()이 __name__ == '__main__'블록에 의해 호출되었습니다. –