2012-11-14 27 views
6

aşağıdaki rastladım: Eğer işletilen bir kuyruk, boru veya benzeri kullanan bir işlemi sonlandırmak, temelde diyorMulitprocessing, sonlandırmak ve yozlaşmış kuyruklar <a href="http://docs.python.org/2/library/multiprocessing.html#multiprocessing.Process.terminate" rel="noreferrer"><code>multiprocessing.terminate()</code></a> için piton doc bakarak iken

Terminate() If this method is used when the associated process is using a pipe or queue then the pipe or queue is liable to become corrupted and may become unusable by other process. Similarly, if the process has acquired a lock or semaphore etc. then terminating it is liable to cause other processes to deadlock.

yapının bozulması riski. Bu konuda bir kaç sorum var

,

  1. bORU, Sırasına veya bozukluk olursa benzer veri almak için çalışıyor başka bir işlem ne olacak?
  2. Bir süreç yolsuzluk olup olmadığını görmek için nasıl kontrol edebilir?
  3. Başka bir işlemin sona erdiğini biliyorsanız, kilitlenme herhangi bir şekilde çözülebilir mi?

Ben her zaman sona kullanmamaya çalışmalısınız anlıyorum, ama bu başka bir şey yapamaz duruma ama bu

+0

1. IOError'ı yükseltir: [Errno 32] Broken pipe – andrean

cevap

1

Tamam, bu en güzel çözüm değildi, ancak ilk olarak istisnaları olabildiğince iyi ele aldım. Yolsuzluk riskiyle karşı karşıya kalmak istemedim, bu yüzden başvuruyu, olası sorunların olasılığını azaltmak için bir yolsuzluk ihtimalinin olduğu bir durumda yeniden başlatıyorum.

Öneriniz için @MarwanAlsabbagh teşekkürler.

3

Verilerin etrafında geçmek ve onları kontrol blokları için toplamlarını ekleyebilir veri bozulmadığını doğrulamak için Bu, veri bozulma riski olan herhangi bir veri iletişiminde yaygın bir tekniktir. Bunun için hashlib'a bakabilir ve md5 veya crc32 checksums gibi bir şey kullanabilirsiniz.