Esempio per l'utilizzo di Python torto con descrittori di file
-
20-09-2019 - |
Domanda
Sto cercando di usare una torsione per controllare la comunicazione attraverso i tubi Linux (os.pipe ()) e FIFO (os.mkfifo ()) fra un processo master e un insieme di processi di schiavi. Mentre sono tat positivo è possibile utilizzare contorta per questi tipi di descrittori di file (dopo tutto, contorto è grande per i socket TCP che * nix astrae come descrittori di file), non riesco a trovare alcun esempio di questo tipo di utilizzo. Qualcuno ha qualche link, codice di esempio, o consigli?
Soluzione
Non ha nulla incorporato per I / O asincrono. Qualcuno ha scritto un libaio involucro per esso, ma non è stato toccato per un lungo periodo di tempo, e non ho idea se funziona ancora.
Nel peggiore dei casi si potrebbe usare select
per vedere se c'è qualcosa a disposizione per leggere, ma che non vi aiuterà con la scrittura.
Altri suggerimenti
È possibile utilizzare reactor.spawnProcess
per impostare arbitrarie mappature dei descrittori di file tra un processo padre e un processo figlio esso genera. Ad esempio, per eseguire un programma e dargli due descrittori di uscita in più (oltre a stdin, stdout e stderr) con i quali può inviare byte indietro al processo principale, si dovrebbe fare qualcosa di simile:
reactor.spawnProcess(protocol, executable, args,
childFDs={0: 'w', 1: 'r', 2: 'r', 3: 'r', 4: 'r'})
Il reattore si prenderà cura di creare le tubazioni per voi, e chiamerà childDataReceived
sul ProcessProtocol
si passa quando vengono letti da loro. Vedere la spawnProcess documentazione API per i dettagli.
Se si sta utilizzando anche intrecciato sul lato bambino, allora si vuole essere principalmente guardando twisted.internet.stdio
. stdiodemo.py e stdin.py negli vi mostrerà come a utilizzare tale modulo.