python - لغة - كود بايثون




احصل على وقت POSIX/Unix بالثانية و nanoseconds في Python؟ (4)

ربما تكون المشكلة مرتبطة بنظام التشغيل الخاص بك ، وليس بيثون. راجع وثائق الوحدة time : http://docs.python.org/library/time.html

time. time()

قم بإرجاع الوقت كرقم نقطة عائمة تم التعبير عنه بالثواني منذ الحقبة ، بالتوقيت العالمي المنسق UTC. لاحظ أنه على الرغم من أنه يتم دائمًا إرجاع الوقت كرقم نقطة عائمة ، إلا أن جميع الأنظمة لا توفر الوقت بدقة أفضل من ثانية واحدة . بينما تقوم هذه الدالة عادة بإرجاع قيم غير متناقصة ، فإنها يمكن أن تعرض قيمة أقل من مكالمة سابقة إذا تم ضبط ساعة النظام مرة أخرى بين مكالمتين.

بعبارة أخرى: إذا كان نظام التشغيل الخاص بك لا يستطيع القيام بذلك ، فإن بيثون لا تستطيع فعل ذلك. يمكنك مضاعفة قيمة الإرجاع حسب ترتيب الحجم المناسب للحصول على القيمة النانوية ، على الرغم من أنها غير دقيقة كما قد تكون.

EDIT: يمثل الإرجاع متغيرًا عائمًا ، لذا سيختلف عدد الأرقام بعد الفاصلة ، سواء كان نظام التشغيل الخاص بك يحتوي على هذا المستوى من الدقة أم لا. يمكنك تنسيقه بـ "%.nf" حيث "%.nf" n إلى عدد الخانات التي تريدها ، على الرغم من ذلك ، إذا كنت تريد تمثيل سلسلة نقطة ثابتة.

لقد كنت أحاول العثور على طريقة للحصول على الوقت منذ 1970-01-01 00:00:00 بالتوقيت العالمي في ثوان و nanoseconds في بيثون وأنا لا يمكن العثور على أي شيء من شأنها أن تعطيني الدقة المناسبة.

لقد حاولت استخدام وحدة الوقت ، ولكن هذه الدقة هي فقط إلى ميكروثانية ، لذلك كان الرمز الذي جربته:

import time

print time.time()

مما أعطاني نتيجة مثل هذا:

1267918039.01

ومع ذلك ، أحتاج إلى نتيجة تبدو كالتالي:

1267918039.331291406

لا أحد يعرف طريقة ممكنة للتعبير عن وقت UNIX في ثوان و nanoseconds؟ لا أستطيع العثور على طريقة لتعيين الدقة المناسبة أو الحصول على نتيجة بالتنسيق الصحيح. شكرا لك على أي مساعدة


لا أعتقد أن هناك طريقة مستقلة عن النظام الأساسي (ربما يكون هناك طرف ثالث قد تم ترميزه ، لكنني لا أستطيع العثور عليه) للحصول على الوقت بالنانوثانية. تحتاج إلى القيام بذلك بطريقة خاصة بالمنصة. على سبيل المثال ، توضح إجابة سؤال SO هذا كيفية القيام بذلك على النظام الأساسي الذي يوفر مكتبة نظام librt.so لعمليات "الوقت الفعلي".



يتم فقد الدقة الخاصة بك فقط بسبب تنسيق السلسلة:

>>> import time
>>> print "%.20f" % time.time()
1267919090.35663390159606933594




posix