2013-03-30 15 views
10

Son zamanlarda Python'da paralel programlama araçları üzerinde çalışıyorum. Ve burada os.pipe ve multiprocessing.Pipe arasında iki önemli fark vardırPython os.pipe vs multiprocessing.Pipe

  1. os.pipe tek yönlü olduğu (kullanıldıkları vesilesiyle rağmen), multiprocessing.Pipe çift yönlü olduğunu.; boruya şeyler koyarak zaman multiprocessing.Pipe turşu kullanırken
  2. /borusundan şeyler almak, os.pipe
benim anlayış doğru olup olmadığını bilmek istiyorum

unpickle /, kodlamak/kod çözmeyi kullanır, ve başka bir fark var mı? Teşekkür ederim.

cevap

6

Belirttiğiniz her şeyin doğru olduğuna inanıyorum.

Linux'ta os.pipe, geleneksel POSIX bağlantılarına erişmek için sadece bir Python arabirimidir. Windows'da, CreatePipe kullanılarak uygulanır. Bunu çağırdığınızda, iki sıradan dosya tanıtıcısı alırsınız. Tek yönlüdür, ve bir ucunda, biri diğer taraftan okuyana kadar çekirdek tarafından tamponlanan bir bayt yazarsınız. Oldukça düşük seviyeli, en azından Python standartlarına göre. multiprocessing.Connection multiprocessing.Pipemultiprocessing.Connection nesneleri kullanılarak oluşturulan çok daha yüksek düzeyli bir arabirimdir. Linux'ta, bunlar POSIX boruları yerine POSIX soketlerinin üzerine yerleştirilmiştir. Windows'ta, CreateNamedPipe API kullanılarak oluşturulmuştur. Belirttiğiniz gibi, multiprocessing.Connection nesneleri, herhangi bir seçilebilir nesne gönderebilir/alabilir ve yalnızca baytlarla uğraşmak yerine, asitleme/ayırma işlemini otomatik olarak halledecektir. Hem çift yönlü hem de tek yönlü olma yeteneğine sahiptirler.