Birden çok işlem uygulaması için kodumu docker'la test ediyorum; bunun için, kendi ebeveynden bağımsız olarak çalışacak işlemlere ihtiyacım var ve bunlar yalnızca tamamlamaya çalışıyor ve herhangi bir şeyi ebeveynle iletişim kurmasına gerek yok.Çatal çatal çalıştırılmadan önce çıkar?
Uygulamayı iki yolla uyguladıktan sonra sadece bir kırılma durumunda, çoklu işlem (mp) kütüphanesi, diğeri basit bir çatal (f) ile. Bu, mp ile mükemmel bir şekilde çalışır çünkü işlemin ana çıkıştan önce tamamlanmasını beklemek için yönergeleri vardır. Ancak, kapsayıcının çıkarsa bile kapsayıcının alt işlemlerin tamamlanmasını bekleyeceğini düşündüm. Docker + fork ile bunun için bir geçici çözüm bilen var mı?
çok işlemli
imdata = [pools.apply_async(detector_optimized.run_full_detection, (gpu_slot, batch_jobs[gpu_slot][0],
batch_jobs[gpu_slot][1], src, dst, ext)) for gpu_slot in xrange(num_jobs)]
# Wait for all subprocesses to complete
map(lambda x: x.get(), imdata)
pools.close()
pools.join()
çatal I os._exit çıkarın (0) çatal sırayla ve artık paralel çalıştırmak hat
for gpu_slot in xrange(len(batch_jobs)):
pid = os.fork()
if pid == 0:
detector_optimized.run_full_detection(gpu_slot, batch_jobs[gpu_slot][0], batch_jobs[gpu_slot][1],
src, dst, detector_optimized.vars.get_EXTENSION())
os._exit(0)
...