كيفية تشغيل وتشغيل البرنامج النصي الخارجي في الخلفية؟[ينسخ]

StackOverflow https://stackoverflow.com/questions/1605520

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

لقد جربت هاتين الطريقتين:

os.system("python test.py")

subprocess.Popen("python test.py", shell=True)

يحتاج كلا الأسلوبين إلى الانتظار حتى انتهاء test.py مما يمنع العملية الرئيسية.أعلم أن "nohup" يمكنه القيام بهذه المهمة.هل هناك طريقة بايثون لتشغيل test.py أو أي نصوص برمجية أخرى وتركها تعمل في الخلفية؟

لنفترض أن test.py يشبه هذا:

for i in range(0, 1000000):
    print i

سيقوم كل من os.system() أو subprocess.Popen() بحظر البرنامج الرئيسي حتى يتم عرض 1000000 سطر من الإخراج.ما أريده هو السماح لـ test.py بالعمل بصمت وعرض مخرجات البرنامج الرئيسي فقط.قد يتوقف البرنامج الرئيسي أثناء استمرار تشغيل test.py.

هل كانت مفيدة؟

المحلول

subprocess.Popen(["python", "test.py"]) يجب أن تعمل.

لاحظ أن المهمة قد تستمر في التوقف عند خروج البرنامج النصي الرئيسي.في هذه الحالة، حاول subprocess.Popen(["nohup", "python", "test.py"])

نصائح أخرى

os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top