Python is my life !!!

پایتون

Python is my life !!!

پایتون

Python is my life !!!

برنامه نویس و طراح اپلیکیشن های تحت وب و مسلط به پایتون، جاوا اسکریپت، html، css، Angularjs و فریمورک Flask هستم ...

طبقه بندی موضوعی
بایگانی

حتما تا به حال موقع print خروجی برنامه های پایتون در یک فایل text به این مشکل برخورده اید که تمام خروجی برنامه یک جا باهم بعد از اتمام اجرای برنامه در فایل خروجی print میشود. این مشکل بیشتر در برنامه هایی به چشم میاید که قرار نیست هیچوقت به پایان برسند و همیشه در حال اجرا خواهند بود و یا اتمام آنها مدت زمان زیادی طول خواهد کشید.

پایتون نوشتن در stdout را cache می‌کند، این به این معنا است که برای بالا بردن سرعت هر بار که متنی print میشود آن را در stdout نمی نویسد و در نهایت در انتهای پروسس همه ی متن های print شده را یکجا باهم در stdout می نویسد. اینگونه اینکار از این که بخواهد یکی یکی بنویسد سریعتر انجام میشود، اما برای حل این مشکل چندین راه حل وجود دارد.

اگر پیش از این اینگونه عمل print را انجام می دادید:

print('Hello World !!!')

برای حل این مشکل کافی است print را به این صورت انجام دهید:

print('Hello World !!!', flush=True)

و یا به جای استفاده از تابع print از ماژول sys کمک بگیرید:

import sys
sys.stdout.write('Hello World !!!\n')
sys.stdout.flush()

اما توصیه میشود بدون ایجاد تغییر در کدهایتان برای حل این مشکل تنها برنامه ی پایتون را به این صورت اجرا نمایید:

python3 -u app.py

و یا اینکه با یکبار وارد کردن دستور زیر در command line دیگر لازم نیست تغییری در کدهایتان بدهید و میتوانید هم به همان شیوه ی سابق برنامه را اجرا نمایید:

export PYTHONUNBUFFERED=1
python3 app.py

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی