Rumah pembangunan bahagian belakang Tutorial Python Cara menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x

Cara menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x

Jul 30, 2023 am 10:07 AM
python x modul subproses Pengurusan subproses

Cara menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x

Ikhtisar:
Dalam pembangunan Python, kadangkala kita perlu memanggil arahan atau atur cara luaran lain dalam program. Modul subproses ialah perpustakaan standard yang disediakan oleh Python, yang boleh membuat dan berkomunikasi dengan mudah dengan subproses. Artikel ini akan memperkenalkan cara menggunakan modul subproses untuk pengurusan subproses dan menggambarkannya dengan contoh kod.

  1. Buat subproses:
    Fungsi yang paling biasa digunakan dalam modul subproses ialah subprocess.Popen(), yang boleh memulakan proses baharu dan mengembalikan objek Popen. Sintaks asas untuk menggunakan fungsi Popen() untuk mencipta subproses adalah seperti berikut: subprocess.Popen(),它能够启动一个新进程并返回一个Popen对象。使用Popen()函数创建子进程的基本语法如下:
import subprocess

subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, 
                 close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, 
                 creationflags=0)
Salin selepas log masuk

参数说明:

  • args: 字符串或者序列类型的命令行参数
  • bufsize: 控制输入输出缓冲大小的参数,0代表不缓冲,1代表行缓冲,其他正数代表缓冲区大小
  • executable: 可执行文件的路径,默认使用系统PATH环境变量中的搜索路径
  • stdin: 子进程的标准输入流,默认为PIPE,即通过Popen对象的stdin属性进行输入
  • stdout: 子进程的标准输出流,默认为PIPE,即通过Popen对象的stdout属性进行输出
  • stderr: 子进程的标准错误流,默认为PIPE,即通过Popen对象的stderr属性进行输出
  • preexec_fn: 一个将在子进程启动之前被调用的可执行对象
  • close_fds: 是否关闭不再需要的文件描述符,默认为False
  • shell: 是否通过shell进行命令解析,默认为False
  • cwd: 工作目录,默认为None
  • env: 环境变量,默认为None,即使用父进程的环境变量
  • universal_newlines: 控制输入输出是否转换为文本模式,默认为False
  • startupinfo: 子进程的启动信息,默认为None
  • creationflags: 子进程的创建标记,默认为0

示例代码1:启动一个子进程并执行命令,然后获取子进程的输出结果。

import subprocess

cmd = "ls -l"
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output, _ = p.communicate()
print(output)
Salin selepas log masuk
  1. 子进程的输入输出:
    在创建子进程时,我们可以通过Popen()函数的stdin、stdout、stderr参数来指定子进程的输入输出。如果不指定这些参数,默认会创建一个新的管道并通过Popen对象的属性来读写。

示例代码2:启动一个子进程并通过管道进行输入、输出。

import subprocess

cmd = "grep -E 'a|b|c'"
p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
input_data = "abcdefg
hijklmnop
qrstuvwxyz
"
output, _ = p.communicate(input_data)
print(output)
Salin selepas log masuk

示例代码3:启动一个子进程并重定向输出到文件中。

import subprocess

cmd = "grep -E 'a|b|c' input.txt > output.txt"
subprocess.Popen(cmd, shell=True)
Salin selepas log masuk
  1. 等待子进程结束:
    子进程的执行是异步的,默认情况下,Popen()函数会立即返回一个Popen对象,而不会等待子进程执行完毕。如果我们需要等待子进程执行完毕后再进行下一步操作,可以使用Popen()对象的wait()方法。

示例代码4:启动一个子进程并等待其执行完毕。

import subprocess

cmd = "ls -l"
p = subprocess.Popen(cmd, shell=True)
p.wait()
print("子进程执行完毕")
Salin selepas log masuk
  1. 捕获子进程的退出状态码:
    每个子进程都会有一个退出状态码,代表其执行结果。可以使用Popen()对象的returncode
  2. import subprocess
    
    cmd = "ls -l"
    p = subprocess.Popen(cmd, shell=True)
    p.wait()
    if p.returncode == 0:
        print("子进程执行成功")
    else:
        print("子进程执行失败")
    Salin selepas log masuk
    Penerangan parameter:

      args: Parameter baris perintah bagi jenis rentetan atau jujukan


      bufsize : Kawal input dan output Parameter saiz penimbal, 0 bermakna tiada penimbalan, 1 bermakna penimbalan baris, nombor positif lain mewakili saiz penimbal

      boleh laku: laluan ke fail boleh laku, laluan carian dalam pembolehubah persekitaran PATH sistem digunakan secara lalai

      🎜stdin: standard strim input proses anak, lalai ialah PIPE, yang dimasukkan melalui atribut stdin objek Popen 🎜🎜stdout: Strim output standard proses anak, yang lalai kepada PIPE. yang merupakan output melalui atribut stdout objek Popen 🎜🎜stderr: Strim ralat standard proses anak , lalai ialah PIPE, iaitu output melalui atribut stderr objek Popen 🎜🎜preexec_fn: objek boleh laku yang. akan dipanggil sebelum proses anak bermula 🎜🎜close_fds: sama ada hendak menutup deskriptor fail yang tidak lagi diperlukan, lalainya ialah False🎜🎜 shell: Sama ada hendak melakukan parsing perintah melalui shell, lalainya ialah False 🎜🎜cwd: The working direktori, lalai ialah Tiada 🎜🎜env: Pembolehubah persekitaran, lalai ialah Tiada, iaitu pembolehubah persekitaran proses induk digunakan 🎜🎜universal_newlines: Mengawal sama ada input dan output ditukar kepada mod Teks, lalai ialah False🎜🎜startupinfo: Maklumat permulaan proses anak, lalainya ialah None🎜🎜creationflags: Bendera penciptaan proses anak, lalai ialah 0🎜
    🎜Contoh kod 1: Mulakan proses anak dan laksanakan arahan, Kemudian dapatkan output proses anak. 🎜rrreee
      🎜Input dan output sub-proses: 🎜Apabila mencipta sub-proses, kita boleh menentukan sub-proses melalui parameter stdin, stdout dan stderr Popen() fungsi Input dan output. Jika parameter ini tidak dinyatakan, paip baharu akan dibuat secara lalai dan dibaca serta ditulis melalui sifat objek Popen. 🎜🎜🎜Contoh kod 2: Mulakan proses kanak-kanak dan lakukan input dan output melalui paip. 🎜rrreee🎜Contoh kod 3: Mulakan subproses dan ubah hala output ke fail. 🎜rrreee
        🎜Tunggu sehingga sub-proses tamat: 🎜Pelaksanaan sub-proses adalah tak segerak Secara lalai, fungsi Popen() akan mengembalikan Popen objek serta-merta dan bukannya Tunggu proses anak untuk menyelesaikan pelaksanaan. Jika kita perlu menunggu proses anak menyelesaikan pelaksanaan sebelum meneruskan ke langkah seterusnya, kita boleh menggunakan kaedah wait() objek Popen(). 🎜🎜🎜Contoh kod 4: Mulakan proses anak dan tunggu pelaksanaannya selesai. 🎜rrreee
          🎜Tangkap kod status keluar proses anak: 🎜Setiap proses anak akan mempunyai kod status keluar, yang mewakili hasil pelaksanaannya. Anda boleh menggunakan atribut returncode objek Popen() untuk mendapatkan kod status keluar bagi proses anak Jika 0, ini bermakna pelaksanaan berjaya. 🎜🎜🎜Contoh kod 5: Dapatkan kod status keluar proses anak. 🎜rrreee🎜Ringkasan: 🎜Melalui modul subproses, kami boleh mencipta subproses dan mengurus proses dalam program Python dengan mudah. Kaedah operasi khusus termasuk mencipta proses kanak-kanak, mengawal input dan output proses kanak-kanak, menunggu proses kanak-kanak tamat, dan menangkap kod status keluar proses kanak-kanak. Menguasai pengetahuan ini boleh menggunakan Python dengan lebih baik untuk pengurusan sub-proses dan meningkatkan fleksibiliti dan skalabiliti program. 🎜🎜Di atas ialah kandungan yang berkaitan tentang menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x. Harap ini membantu. 🎜

    Atas ialah kandungan terperinci Cara menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan modul matematik untuk melaksanakan operasi matematik dalam Python 3.x Cara menggunakan modul matematik untuk melaksanakan operasi matematik dalam Python 3.x Aug 01, 2023 pm 03:15 PM

Cara menggunakan modul matematik untuk melaksanakan operasi matematik dalam Python 3.x Pengenalan: Dalam pengaturcaraan Python, melaksanakan operasi matematik adalah keperluan biasa. Untuk memudahkan pemprosesan operasi matematik, Python menyediakan perpustakaan matematik, yang mengandungi banyak fungsi dan pemalar untuk pengiraan matematik dan fungsi matematik. Artikel ini akan memperkenalkan cara menggunakan modul matematik untuk melaksanakan operasi matematik biasa dan menyediakan contoh kod yang sepadan. 1. Penambahan operasi matematik asas dilakukan menggunakan fungsi math.add() dalam modul matematik.

Cara menggunakan fungsi urllib.parse.unquote() untuk menyahkod URL dalam Python 3.x Cara menggunakan fungsi urllib.parse.unquote() untuk menyahkod URL dalam Python 3.x Aug 02, 2023 pm 02:25 PM

Cara menggunakan fungsi urllib.parse.unquote() untuk menyahkod URL dalam Python 3.x Dalam perpustakaan urllib Python, modul urllib.parse menyediakan satu siri fungsi alat untuk pengekodan dan penyahkodan URL, antaranya urllib.parse.unquote. () Fungsi boleh digunakan untuk menyahkod URL. Artikel ini akan memperkenalkan cara menggunakan urllib.parse.un

Cara menggunakan Padanan Pola untuk padanan corak jenis dalam Java 14 Cara menggunakan Padanan Pola untuk padanan corak jenis dalam Java 14 Jul 31, 2023 pm 12:01 PM

Cara menggunakan PatternMatching untuk padanan corak jenis dalam Java14 Pengenalan: Java14 memperkenalkan ciri baharu, PatternMatching, yang merupakan alat berkuasa yang boleh digunakan untuk padanan corak jenis pada masa penyusunan. Artikel ini akan memperkenalkan cara menggunakan PatternMatching untuk jenis padanan corak dalam Java14 dan memberikan contoh kod. Fahami konsep PatternMatchingPattern

Cara menggunakan fungsi join() dalam Python 2.x untuk menggabungkan senarai rentetan menjadi satu rentetan Cara menggunakan fungsi join() dalam Python 2.x untuk menggabungkan senarai rentetan menjadi satu rentetan Jul 30, 2023 am 08:36 AM

Cara menggunakan fungsi join() dalam Python2.x untuk menggabungkan senarai rentetan menjadi satu rentetan Dalam Python, kita selalunya perlu menggabungkan berbilang rentetan menjadi satu rentetan. Python menyediakan pelbagai cara untuk mencapai matlamat ini, salah satu cara biasa ialah menggunakan fungsi join(). Fungsi join() boleh menggabungkan senarai rentetan ke dalam rentetan, dan boleh menentukan pembatas apabila menggabungkan. Sintaks asas untuk menggunakan fungsi join() adalah seperti berikut: &

Cara menggunakan modul os untuk melaksanakan perintah sistem dalam Python 3.x Cara menggunakan modul os untuk melaksanakan perintah sistem dalam Python 3.x Jul 31, 2023 pm 12:19 PM

Cara menggunakan modul os untuk melaksanakan perintah sistem dalam Python3.x Dalam perpustakaan standard Python3.x, modul os menyediakan satu siri kaedah untuk melaksanakan arahan sistem. Dalam artikel ini, kita akan belajar cara menggunakan modul os untuk melaksanakan arahan sistem dan memberikan contoh kod yang sepadan. Modul os dalam Python ialah antara muka untuk berinteraksi dengan sistem pengendalian. Ia menyediakan kaedah seperti melaksanakan perintah sistem, mengakses fail dan direktori, dsb. Berikut adalah beberapa kaedah modul os yang biasa digunakan, yang boleh digunakan untuk melaksanakan arahan sistem.

Cara menggunakan fungsi write() untuk menulis kandungan pada fail dalam Python 2.x Cara menggunakan fungsi write() untuk menulis kandungan pada fail dalam Python 2.x Jul 30, 2023 am 08:37 AM

Cara menggunakan fungsi write() untuk menulis kandungan pada fail dalam Python2.x Dalam Python2.x, kita boleh menggunakan fungsi write() untuk menulis kandungan pada fail. Fungsi write() ialah salah satu kaedah objek fail dan boleh digunakan untuk menulis rentetan atau data binari pada fail. Dalam artikel ini, saya akan menerangkan secara terperinci cara menggunakan fungsi write() dan beberapa kes penggunaan biasa. Buka fail Sebelum menulis ke fail menggunakan fungsi write(), I

Cara menggunakan fungsi urllib.quote() untuk mengekod URL dalam Python 2.x Cara menggunakan fungsi urllib.quote() untuk mengekod URL dalam Python 2.x Jul 31, 2023 pm 08:37 PM

Cara menggunakan fungsi urllib.quote() untuk mengekod URL dalam URL Python 2.x mengandungi pelbagai aksara, termasuk huruf, nombor, aksara khas, dsb. Untuk membolehkan URL dihantar dan dihuraikan dengan betul, kita perlu mengekodkan aksara khas di dalamnya. Dalam Python2.x, anda boleh menggunakan fungsi urllib.quote() untuk mengekod URL Mari perkenalkan penggunaannya secara terperinci di bawah. urllib.quote

Cara menggunakan modul hashlib untuk pengiraan algoritma hash dalam Python 2.x Cara menggunakan modul hashlib untuk pengiraan algoritma hash dalam Python 2.x Jul 29, 2023 pm 05:16 PM

Cara menggunakan modul hashlib untuk pengiraan algoritma cincang dalam Python 2.x Dalam pengaturcaraan Python, algoritma cincang ialah algoritma yang biasa digunakan untuk menjana pengenalan data yang unik. Python menyediakan modul hashlib untuk melakukan pengiraan algoritma hash. Artikel ini akan memperkenalkan cara menggunakan modul hashlib untuk melakukan pengiraan algoritma cincang dan memberikan beberapa kod sampel. Modul hashlib adalah sebahagian daripada perpustakaan standard Python dan menyediakan pelbagai algoritma hash biasa, seperti MD5, SH

See all articles