Tôi mất một chút thời gian để thực hiện giải pháp của Roland do sự phiền toái khi đi qua mã python như chuỗi, vì vậy tôi nghĩ tôi sẽ chia sẻ một ví dụ làm việc.
Kịch bản này lần một chương trình bên ngoài trong thư mục làm việc, và chuyển hướng đầu ra tiêu chuẩn và lỗi chuẩn của nó vào tệp.
from timeit import timeit
reps = 500
stdout = open("add_numbers_outputs.log", 'w')
stderr = open("add_numbers_errors.log", 'w')
external_command = "./add_numbers"
parameter = str(1000000) # one million
call_arguments = """[
'%s',
'%s'], # pass additional parameters by adding elements to this list
stdout=stdout,
stderr=stderr
""" % (external_command, parameter)
print "Timing external command "+external_command+" with parameter "+parameter
time_taken = timeit(stmt = "subprocess.call(%s)" % call_arguments,
setup = """import subprocess;
stdout = open("add_numbers_outputs.log", 'w');
stderr = open("add_numbers_errors.log", 'w')
""",
number = reps)/reps
print "Average time taken for %s repetitions: %f seconds" % (reps, time_taken)
cảm ơn bạn! đó là khá nhiều thông tin! :) – Frost
câu trả lời này có vẻ tốt cho thời gian mã python, nhưng nếu chúng ta đang chạy một subprocess, điều này có thể không chính xác, kể từ khi Popen.wait() sử dụng một vòng lặp bận rộn. [https://docs.python.org/dev/library/subprocess.html#subprocess.Popen.wait] – ggg
@ggg Không chắc chắn nếu điều này thực sự là một vấn đề: Popen.wait() nên chạy trong quá trình hiện tại. Do đó, việc sử dụng tài nguyên của các tiến trình con không nên bị ảnh hưởng. – Steohan