Сделайте os.system ('cls') быстрее - PullRequest
0 голосов
/ 04 апреля 2020

Рассмотрим следующий код:

import time
import os
for a in range(10, 0, -1): # total time is actually 1 second. no float allowed for arg 3.
    print(a)
    time.sleep(0.X) #unknown time...
    os.system('cls')

При запуске программы a уменьшается на 1/10 секунды за раз.

Проблема: os.system('cls') обработка занимает более 0,1 секунды. Любое решение, чтобы сделать это быстрее?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

На самом деле, вы можете сделать окно cmd меньше, чтобы сократить время обработки. Оно работает! Наличие меньшего количества пикселей для генерации и очистки делает его идеальным вариантом.

def count():
    for a in range(10, 0, -1):
        print(a)
        time.sleep(0.1) #I know I am breaking the DO NOT USE TIME.SLEEP rule.
        os.system('cls')
count()

Как уже говорилось выше, использование time.sleep никогда не будет надежным, но если вы уменьшите окно, оно приблизится. (Я думаю, что это не должно быть на месте.)

0 голосов
/ 05 апреля 2020

Я понимаю, что ваша проблема в том, что for l oop работает дольше 1 секунды, потому что os.system('cls') не мгновенный:

Вы можете проверить это с помощью модуля timeit в Python:

Без os.system('cls'):

import time
import timeit
import os
start = timeit.default_timer()
for a in range(10, 0, -1): # total time is actually 1 second. no float allowed for arg 3.
    print(a)
    time.sleep(0.1) #unknown time...
stop = timeit.default_timer()
print('Time: ', stop - start)  

Выход:

10
9
8
7
6
5
4
3
2
1
Time:  1.0021432

С os.system('cls'):

Time:  1.7151739000000001

Вы не может решить эту проблему, потому что даже без os.system('cls') это займет более 1 секунды. Сама функция os.system('cls') уже занимает около 0.1649219 секунд для выполнения. Вы не можете заставить библиотеку Python работать быстрее.

...