Lời nói đầu
Hãy chắc chắn rằng bạn thực sự cần phải chạy nhiệm vụ của bạn nhiều lần. Điều này được gọi là chờ đợi bận rộn và hầu như luôn luôn tối ưu. Nếu tác vụ của bạn đang kiểm tra đầu ra của một quy trình con, bạn có thể chỉ cần subprocess.wait()
hoàn thành nó. Nếu nhiệm vụ của bạn là đợi một tệp hoặc thư mục trong hệ thống tệp được chạm vào, bạn có thể sử dụng pyinotify để mã được kích hoạt từ sự kiện hệ thống tệp được xử lý bởi kernel.
Câu trả lời
Đây là cách bạn viết vòng lặp vô hạn cho việc chờ đợi bận rộn mà không tốn quá nhiều CPU.
Con trăn 2:
from __future__ import print_function
from __future__ import division
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
Con trăn 3:
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
Đánh giá
Như @gnibbler đã thử nghiệm trong một câu trả lời khác , mã được trình bày không nên tiêu thụ nhiều hơn 1% CPU trên các máy gần đây. Nếu nó vẫn tiêu tốn quá nhiều CPU với mã tải trọng của bạn, hãy xem xét tăng thời gian để ngủ hơn nữa. Mặt khác, mã tải trọng có thể cần được tối ưu hóa để thực hiện lặp lại. Ví dụ, bộ nhớ đệm có thể tăng tốc độ chạy trên dữ liệu không thay đổi.
Tín dụng
Câu trả lời này cố gắng xây dựng dựa trên câu trả lời của @ user2301728 .