ile başarısız Parametreler için, öğretici için bkz. http://zqdevres.qiniucdn.com/data/20150702120338/index.html.PyInstaller dahili Windows EXE multiprocessing.pool
Proje, PyInstaller 3.1.1 kullanılarak tek bir Windows EXE'de paketleniyor. --onedir seçeneği ile. PyInstaller EXE'i sorun yaratmadan oluşturur ve programın çok parçalı kullanımı olmayan bölümleri sorunsuz bir şekilde yürütebilirim.
Yukarıdaki çoklu işlem işlevini kullanan programın bölümlerini çalıştırmaya çalıştığımda sorunum geliyor.
File "multiprocessing\context.py", line 148, in freeze_support
File "multiprocessing\spawn.py", line 74, in freeze_support
File "multiprocessing\spawn.py", line 106, in spawn_main
File "multiprocessing\spawn.py", line 115, in _main
File "multiprocessing\spawn.py", line 221, in prepare
File "multiprocessing\context.py", line 231, in set_start_method
RuntimeError: context has already been set
classifier_v3_gui returned -1
freeze_support ana birinci hat olarak çağrısı içermelidir https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing bir öneri olarak gelir:
Ardından, program (ve üzeri her çocuk parçacığı tarafından üzerine yazılmış) aşağıdaki hata iletisiyle başarısız olur benzer bir sorun PyInstaller-built Windows EXE fails with multiprocessing tartışılan ve bununla birlikte, a) --onedir için tartışılan çözüm hatadan görebileceğiniz gibi, benim için çalışmaya görünmüyor, yukarıdaki bağlantıda çözümü anlamına gelir olmuşturif name == "__main__":
multiprocessing.freeze_support()
aldığım mesaj, b) _Popen'in Pool-ing ile ilgili olduğunu bilmiyorum, bu yüzden --onefile için nasıl bile bilmiyorum sınıf yeniden tanımlamasını uygulamak.
Çok işlemcili.freeze_support() işlevini ana bilgisayarda kullanmazsam, program RuntimeError uygulamasının gerçekleşmemesi nedeniyle farklı davranır; bunun yerine programımın her defasında cmd'ye yazdırılan programın kullanım talimatlarını alıyorum. ortaya çıkması beklenen bir şey değil, EXE'i kendileri çağırmaya çalışan, ortaya çıkan süreçlerin.
Programın bir .py betiği gibi bir sorun olmadan çalıştığını söylemeye gerek yok. Ben 32 bit Python 3.4 kullanıyorum
Aklıma 10.
yalnızca diğer çözüm çoklu işlem kullanmak benim çözüm yeniden yazmak olduğunu Windows üzerinde (Python 2.7 ile de aynı çoklu sorunu vardı). İşlemin yerine çoklu işlem yapılması. Havuz işlevimin ne yaptığını yapmak için oldukça düşük bir çabanız varsa, buna razı olacağım.
Merhaba @Mjellma sorunuza cevap verebilir misiniz? Anladığım kadarıyla bu hatayı halledebildiniz. – mathiasfk