In meinem Projekt verwende ich argprse, um Argumente zu übergeben und irgendwo im Skript verwende ich Multiprocessing, um den Rest der Berechnungen zu tun. Skript funktioniert gut, wenn ich es von der Eingabeaufforderung für ex aufrufen.Python Multiprozessing löst Fehler mit Argparse und Pyinstaller
"python complete_script.py --arg1=xy --arg2=yz
".
Aber es nach der Konvertierung Pyinstaller mit dem Befehl "pyinstaller --onefile complete_script.py" exe mit wirft
Fehler
" error: unrecognized arguments: --multiprocessing-fork 1448"
Irgendwelche Vorschläge, wie ich diese Arbeit machen könnte. Oder irgendeine andere Alternative. Mein Ziel ist es, eine Exe-Anwendung zu erstellen, die ich in einem anderen System aufrufen kann, in dem Python nicht installiert ist.
Hier sind die Details meiner Arbeitsstation:
Platform: Windows 10
Python : 2.7.13 <installed using Anaconda>
multiprocessing : 0.70a1
argparse: 1.1
von Kommentar kopiert:
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()
Dies könnte nützliche Informationen zur Arbeit für: [ '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 (): Pool = Pool (process = cpu_count) jobs = [pool.apply_async (target_functions, args = (i,) für i in input_array)] pool.close() ['code'] –
Wann wird 'main' aufgerufen? Beim Import oder nur durch einen 'is __name __...' Block? – hpaulj
main() wird von __name__ == '__main__' Block –