Cara Melaksanakan Berbilang `kucing | zgrep` Perintah selari dengan Python?

DDD
Lepaskan: 2024-10-29 13:47:02
asal
413 orang telah melayarinya

 How to Execute Multiple `cat | zgrep` Commands in Parallel with Python?

Python: Melaksanakan Subproses Kucing Secara Selari

Skrip ini bertujuan untuk menjalankan berbilang kucing | perintah zgrep pada pelayan jauh, dan tangkap outputnya secara individu untuk pemprosesan selanjutnya. Walau bagaimanapun, pelaksanaan semasa melaksanakan perintah ini secara berurutan, yang menghalang prestasi.

Untuk menangani isu ini, kami boleh memanfaatkan kuasa selari dalam Python. Dengan mengubah suai kod seperti berikut, kami boleh melaksanakan panggilan subproses secara selari sambil masih mengekalkan keupayaan untuk mengumpul output bagi setiap arahan secara individu:

<code class="python">import asyncio
import sys
from subprocess import Popen, PIPE, STDOUT

# Run commands in parallel
processes = [Popen('ssh remote_host cat files_to_process | zgrep --mmap "regex"',
                     shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
              for _ in range(5)]

# Collect outputs in parallel
def get_lines(process):
    return process.communicate()[0].splitlines()

outputs = [get_lines(process) for process in processes]</code>
Salin selepas log masuk

Kod yang dikemas kini ini menggunakan kelas Proses daripada modul subproses kepada buat subproses untuk setiap arahan. Ia kemudiannya menggunakan kaedah komunikasi untuk menangkap output daripada setiap proses. Dengan menyediakan rentetan kosong sebagai input kepada parameter stdin, kami boleh menentukan bahawa tiada input harus dihantar ke subproses.

Skrip juga menunjukkan cara menggunakan pemahaman senarai untuk mencipta senarai proses dan senarai keluaran secara serentak. Pendekatan ini menawarkan pelaksanaan yang lebih mudah dan ringkas berbanding dengan menggunakan berbilang pemprosesan atau penjalinan.

Selain itu, skrip menggunakan parameter close_fds untuk memastikan deskriptor fail untuk proses anak ditutup selepas ia digunakan. Ini membantu mengelakkan potensi kebocoran sumber atau ralat apabila subproses dilaksanakan secara selari.

Atas ialah kandungan terperinci Cara Melaksanakan Berbilang `kucing | zgrep` Perintah selari dengan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan