Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengeluarkan Proses Latar Belakang Menggunakan Modul `subproses` Python?

Bagaimana untuk Mengeluarkan Proses Latar Belakang Menggunakan Modul `subproses` Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-16 08:42:11870semak imbas

How to Detach Background Processes Using Python's `subprocess` Module?

Cara Memulakan Proses Latar Belakang Terpisah dalam Python

Apabila menukar skrip shell kepada Python, anda mungkin menghadapi keperluan untuk memulakan proses dalam latar belakang yang berterusan walaupun selepas skrip selesai. Untuk mencapai matlamat ini, anda boleh menggunakan modul subproses Python.

Menggunakan subproses.Popen

Fungsi subproses.Popen membolehkan anda melahirkan proses baharu. Untuk memulakan proses di latar belakang dan memisahkannya daripada proses induk, hantar argumen shell=True dan stderr=subprocess.STDOUT ke subprocess.Popen:

import subprocess
subprocess.Popen(["command", "arg1", "arg2"], shell=True, stderr=subprocess.STDOUT)

Menggunakan garpu() Fungsi

Pilihan lain ialah menggunakan fungsi fork() untuk mencipta proses anak yang berjalan serentak dengan proses induk. Walau bagaimanapun, kaedah ini lebih maju dan memerlukan pengendalian isyarat dan sumber yang teliti.

Mengelakkan Penyekatan

Untuk mengelakkan proses induk daripada menyekat sementara menunggu proses anak untuk selesai, elakkan memanggil kaedah communicate() pada objek proses yang dikembalikan oleh Popen.

Contoh

Untuk memulakan proses yang berjalan sleep 30 di latar belakang, gunakan berikut:

import subprocess
subprocess.Popen(["sleep", "30"])

Penjelasan

Dalam konteks ini, "latar belakang" merujuk kepada memulakan proses yang berjalan secara bebas daripada proses induk, tidak kira sama ada ia dimulakan dalam latar belakang cangkerang.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Proses Latar Belakang Menggunakan Modul `subproses` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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