Pelaksanaan Subproses Tidak Menyekat
Untuk mencapai pelaksanaan subproses tanpa menyekat, pertimbangkan untuk menggunakan subproses.Popen dan bukannya subprocess.call. subprocess.call menunggu arahan selesai sebelum kembali, manakala subprocess.Popen segera memulakan subproses dan mengembalikan objek seperti fail.
<code class="python">import subprocess subprocess.Popen(["python", "slave.py"] + sys.argv[1:])</code>
Dengan menggunakan subprocess.Popen, anda boleh menghantar argumen kepada hamba. py dan benarkan ia berjalan secara bebas daripada main.py. slave.py kemudiannya boleh melaksanakan tugasnya tanpa menyekat main.py.
<code class="python">import subprocess import time p = subprocess.Popen(['sleep', '5']) while p.poll() is None: print('Still sleeping') time.sleep(1) print('Not sleeping any longer. Exited with returncode %d' % p.returncode)</code>
Dalam Python 3.5 dan lebih baru, anda juga boleh menggunakan coroutines untuk mencapai keselarian dan pelaksanaan subproses tidak menyekat.
<code class="python">import asyncio async def do_subprocess(): print('Subprocess sleeping') proc = await asyncio.create_subprocess_exec('sleep', '5') returncode = await proc.wait() print('Subprocess done sleeping. Return code = %d' % returncode) async def sleep_report(number): for i in range(number + 1): print('Slept for %d seconds' % i) await asyncio.sleep(1) loop = asyncio.get_event_loop() tasks = [ asyncio.ensure_future(do_subprocess()), asyncio.ensure_future(sleep_report(5)), ] loop.run_until_complete(asyncio.gather(*tasks)) loop.close()</code>
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pelaksanaan Subproses Tidak Menyekat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!