Dans mon projet, j'utilise argprse pour passer des arguments et quelque part dans le script j'utilise le multiprocessing pour faire le reste des calculs. Script fonctionne très bien si je l'appelle à partir de l'invite de commande par ex.Le multiprocessing Python déclenche une erreur avec argparse et pyinstaller
"python complete_script.py --arg1=xy --arg2=yz
".
Mais après la conversion à l'aide exe commande à l'aide Pyinstaller "pyinstaller --onefile complete_script.py" il jette
erreur
" error: unrecognized arguments: --multiprocessing-fork 1448"
Toute suggestion comment pourrais-je faire ce travail. Ou toute autre alternative. Mon but est de créer une application exe que je peux appeler dans un autre système où Python n'est pas installé.
Voici les détails de mon poste de travail:
Platform: Windows 10
Python : 2.7.13 <installed using Anaconda>
multiprocessing : 0.70a1
argparse: 1.1
Copié de commentaire:
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()
Cela pourrait l'information utile pour travailler pour: [ 'code'] def main(): main_parser = argparse.ArgumentParser() all_inputs = main_parser.parse_args() wrap_function (all_inputs) def wrap_function (all_inputs): distribute_function () def distribute_function (): Piscine = Piscine (process = CPU_COUNT) jobs = [pool.apply_async (fonctions_cible, args = (i,) pour i dans input_array)] pool.close() ['code'] –
Quand 'main' est-il appelé? Sur l'importation ou seulement par un bloc 'est __name __...'? – hpaulj
main() est appelée par __name__ == '__main__' bloc –