Python Multiprocessing hakkında bilgi edinmek (bir PMOTW makalesinden ) ve join()
yöntemin tam olarak ne yaptığına dair biraz açıklama yapmak isterim .
Bir In 2008 eski öğretici o olmadan belirtiyor p.join()
aşağıdaki kodu çağrı, "çocuk süreç elle öldürmek gereken bir zombi haline sonlandırmak boşta ve olmayacaktır".
from multiprocessing import Process
def say_hello(name='world'):
print "Hello, %s" % name
p = Process(target=say_hello)
p.start()
p.join()
Testin PID
yanı sıra time.sleep
test çıktısını da ekledim ve söyleyebileceğim kadarıyla süreç kendi kendine sona eriyor:
from multiprocessing import Process
import sys
import time
def say_hello(name='world'):
print "Hello, %s" % name
print 'Starting:', p.name, p.pid
sys.stdout.flush()
print 'Exiting :', p.name, p.pid
sys.stdout.flush()
time.sleep(20)
p = Process(target=say_hello)
p.start()
# no p.join()
20 saniye içinde:
936 ttys000 0:00.05 /Library/Frameworks/Python.framework/Versions/2.7/Reso
938 ttys000 0:00.00 /Library/Frameworks/Python.framework/Versions/2.7/Reso
947 ttys001 0:00.13 -bash
20 saniye sonra:
947 ttys001 0:00.13 -bash
Davranış, p.join()
dosyanın sonuna geri eklendiğinde aynıdır . Haftanın Python Modülü , modülün çok okunabilir bir açıklamasını sunuyor ; "Bir işlemin çalışmasını tamamlayıp çıkmasını beklemek için, join () yöntemini kullanın.", Ancak en azından OS X bunu zaten yapıyor gibi görünüyor.
Yöntemin adını da merak ediyorum. Is .join()
yöntem şey burada artarda? Sonu olan bir süreci birleştirmek mi? Yoksa Python'un yerel .join()
yöntemiyle bir adı mı paylaşıyor ?
CPU, Memory resources
süreç ana süreçten ayrılıyor, sonra join
alt süreç tamamlandıktan sonra tekrar geri mi alınıyor?