python顯示進度
如果沒有正常打開,read_* 會拋出 EOFError, write 會拋出 socket.error 所以,標準的做法是把後面有read/write的部分統統放在一個 try 語句里,然後捕獲 EOFError 和 socket.error
⑵ python中怎麼用控制台使用方法
本文實例講述了Python顯示進度條的方法,是Python程序設計中非常實用的技巧。分享給大家供大家參考。具體方法如下:
首先,進度條和一般的print區別在哪裡呢?
答案就是print會輸出一個\n,也就是換行符,這樣游標移動到了下一行行首,接著輸出,之前已經通過stdout輸出的東西依舊保留,而且保證我們在下面看到最新的輸出結果。
進度條不然,我們必須再原地輸出才能保證他是一個進度條,否則換行了怎麼還叫進度條?
最簡單的辦法就是,再輸出完畢後,把游標移動到行首,繼續在那裡輸出更長的進度條即可實現,新的更長的進度條把舊的短覆蓋,就形成了動畫效果。
可以想到那個轉義符了吧,那就是\ r。
轉義符r就可以把游標移動到行首而不換行,轉義符n就把游標移動到行首並且換行。
在python中,輸出stdout(標准輸出)可以使用sys.stdout.write
例如:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: [email protected]
##2010-10-27 22:07
"""
Usage:
Just A Template
"""
from __future__ import division
import sys,time
j = '#'
if __name__ == '__main__':
for i in range(1,61):
j += '#'
sys.stdout.write(str(int((i/60)*100))+'% ||'+j+'->'+"\r")
sys.stdout.flush()
time.sleep(0.5)
print
第二種思路是用轉義符\b
轉義符\b是退格鍵,也就是說把輸出的游標往回退格子,這樣就可以不用+=了,例如:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: [email protected]
#2010-10-27 22:07
"""
Usage:
Just A Template
"""
from __future__ import division
import sys,time
if __name__ == '__main__':
for i in range(1,61):
sys.stdout.write('#'+'->'+"\b\b")
sys.stdout.flush()
time.sleep(0.5)
print
游標回退2格,寫個#再回退,再寫,達到增長的目的了
不過寫這么多似乎是廢話,在耳邊常常聽到一句話:那就是不要重復造輪子。實際上python有豐富發lib幫你實現這個東西,你完全可以把心思放在邏輯開發上而不用注意這些小細節
下面要介紹的就是這個類「progressbar」,使用easy_install可以方便的安裝這個類庫,其實就一個文件,拿過來放到文件同一個目錄下面也直接可以import過來
如下圖所示:
下面就是基本使用舉例:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: [email protected]
#2010-10-27 22:53
"""
Usage:
Just A Template
"""
from __future__ import division
import sys,time
from progressbar import *
total = 1000
#基本用法
progress = ProgressBar()
for i in progress(range(total)):
time.sleep(0.01)
pbar = ProgressBar().start()
for i in range(1,1000):
pbar.update(int((i/(total-1))*100))
time.sleep(0.01)
pbar.finish()
#高級用法
widgets = ['Progress: ', Percentage(), ' ', Bar(marker=RotatingMarker('>-=')),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=10000000).start()
for i in range(1000000):
# do something
pbar.update(10*i+1)
time.sleep(0.0001)
pbar.finish()
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# coding:utf-8
import sys
import time
from progressbar import AnimatedMarker, Bar, BouncingBar, Counter, ETA, \
FileTransferSpeed, FormatLabel, Percentage, \
ProgressBar, ReverseBar, RotatingMarker, \
SimpleProgress, Timer
examples = []
def example(fn):
try:
name = 'Example %d' % int(fn.__name__[7:])
except:
name = fn.__name__
def wrapped():
try:
sys.stdout.write('Running: %s\n' % name)
fn()
sys.stdout.write('\n')
except KeyboardInterrupt:
sys.stdout.write('\nSkipping example.\n\n')
examples.append(wrapped)
return wrapped
@example
def example0():
pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
time.sleep(0.01)
pbar.update(i + 1)
pbar.finish()
@example
def example1():
widgets = ['Test: ', Percentage(), ' ', Bar(marker=RotatingMarker()),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=10000000).start()
for i in range(1000000):
# do something
pbar.update(10 * i + 1)
pbar.finish()
@example
def example2():
class CrazyFileTransferSpeed(FileTransferSpeed):
"""It's bigger between 45 and 80 percent."""
def update(self, pbar):
if 45 < pbar.percentage() < 80:
return 'Bigger Now ' + FileTransferSpeed.update(self, pbar)
else:
return FileTransferSpeed.update(self, pbar)
widgets = [CrazyFileTransferSpeed(), ' <<<', Bar(), '>>> ',
Percentage(), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=10000000)
# maybe do something
pbar.start()
for i in range(2000000):
# do something
pbar.update(5 * i + 1)
pbar.finish()
@example
def example3():
widgets = [Bar('>'), ' ', ETA(), ' ', ReverseBar('<')]
pbar = ProgressBar(widgets=widgets, maxval=10000000).start()
for i in range(1000000):
# do something
pbar.update(10 * i + 1)
pbar.finish()
@example
def example4():
widgets = ['Test: ', Percentage(), ' ',
Bar(marker='0', left='[', right=']'),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=500)
pbar.start()
for i in range(100, 500 + 1, 50):
time.sleep(0.2)
pbar.update(i)
pbar.finish()
@example
def example5():
pbar = ProgressBar(widgets=[SimpleProgress()], maxval=17).start()
for i in range(17):
time.sleep(0.2)
pbar.update(i + 1)
pbar.finish()
@example
def example6():
pbar = ProgressBar().start()
for i in range(100):
time.sleep(0.01)
pbar.update(i + 1)
pbar.finish()
@example
def example7():
pbar = ProgressBar() # Progressbar can guess maxval automatically.
for i in pbar(range(80)):
time.sleep(0.01)
@example
def example8():
pbar = ProgressBar(maxval=80) # Progressbar can't guess maxval.
for i in pbar((i for i in range(80))):
time.sleep(0.01)
@example
def example9():
pbar = ProgressBar(widgets=['Working: ', AnimatedMarker()])
for i in pbar((i for i in range(50))):
time.sleep(.08)
@example
def example10():
widgets = ['Processed: ', Counter(), ' lines (', Timer(), ')']
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(150))):
time.sleep(0.1)
@example
def example11():
widgets = [FormatLabel('Processed: %(value)d lines (in: %(elapsed)s)')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(150))):
time.sleep(0.1)
@example
def example12():
widgets = ['Balloon: ', AnimatedMarker(markers='.oO<a href="">@*</a> ')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)
@example
def example13():
# You may need python 3.x to see this correctly
try:
widgets = ['Arrows: ', AnimatedMarker(markers='←↖↑↗→↘↓↙')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')
@example
def example14():
# You may need python 3.x to see this correctly
try:
widgets = ['Arrows: ', AnimatedMarker(markers='◢◣◤◥')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')
@example
def example15():
# You may need python 3.x to see this correctly
try:
widgets = ['Wheels: ', AnimatedMarker(markers='◐◓◑◒')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')
@example
def example16():
widgets = [FormatLabel('Bouncer: value %(value)d - '), BouncingBar()]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(180))):
time.sleep(0.05)
@example
def example17():
widgets = [FormatLabel('Animated Bouncer: value %(value)d - '),
BouncingBar(marker=RotatingMarker())]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(180))):
time.sleep(0.05)
@example
def example18():
widgets = [Percentage(),
' ', Bar(),
' ', ETA(),
' ', AdaptiveETA()]
pbar = ProgressBar(widgets=widgets, maxval=500)
pbar.start()
for i in range(500):
time.sleep(0.01 + (i < 100) * 0.01 + (i > 400) * 0.9)
pbar.update(i + 1)
pbar.finish()
@example
def example19():
pbar = ProgressBar()
for i in pbar([]):
pass
pbar.finish()
try:
for example in examples:
example()
except KeyboardInterrupt:
sys.stdout('\nQuitting examples.\n')
⑶ python 怎麼顯示打包進度
1、下載並安裝py2exe,可下載最新版本。 2、編寫安裝腳本,比較簡單,不過多解釋,如下: Screenshot_setup.py #!/usr/bin/env python # -*- coding: utf-8 -*- from distutils.core import setup import py2exe includes = ["encodings", "encod...
⑷ python怎麼輸出進度條的效果
單線程阻塞方式是看不到進度條滾動,先看看threading模塊吧,run函數里p.start()兼起動一另個工作線程就要馬上返回,工作線程結束的地方才調用p.stop().
⑸ Python中怎麼創建一個顯示移動文件的完成情況的百分比或者進度條
用tqdm模塊
⑹ python語言下,如何實現控制台風格的進度顯示
import sys
import time
# Output example: [======= ] 75%
# width defines bar width
# percent defines current percentage
def progress(width, percent):
print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / 100 * '='), percent),
if percent >= 100:
print
sys.stdout.flush()
# Simulate doing something ...
for i in xrange(100):
progress(50, (i + 1))
time.sleep(0.1) # Slow it down for demo
⑺ python 進度條如何控制
首先,我們需要創建一個新的python文件,點擊工具欄上方的file按鈕,然後在彈出的選項中選擇新建,找到如圖所示的新建python file,創建一個新文件。
按照提示給我們的新文件命名,然後在創建的文件中輸入我們需要的代碼,如圖所示,我們需要導入time包,使用其中的功能來完成進度條的設置。
相關推薦:《Python教程》
我們可以按照需求來定義進度條的長度,最後一條語句中括弧內的數值就可以控制進度條顯示的長度,也可以更改時間來定義進度條顯示的速度。
設置完成之後,我們點擊工具欄上方的run按鈕,來運行我們的程序,點擊運行按鈕之後,選擇我們需要運行的python文件,下方會提示我們的文件是否有錯誤信息。
如果沒有錯誤信息,系統會提示錯誤為零,如果有錯誤信息,我們需要將錯誤的內容更正之後才能正常運行,點擊運行之後,可以看到我們的進度條已經開始正常顯示了。
按照我們設置的方式,進度條前方顯示載入的數據,進度條以方框的形式顯示,一共設置了20個方框來設置為整個進度條的長度,20個方框全部載入完成,進度條完成100%.整個進度條顯示完成。
⑻ python運行過程中如何看進度
實時列印出來,可以用tqdm等庫
⑼ python怎樣顯示文件的傳輸進度
爬取網站? 網站的數據,還是保存所有頁面代碼? 無論這兩者哪個,都要知道網站所有頁面的url才行。
⑽ Python實現多進程+進度條顯示
之前在寫繁體字轉簡體字的時候,由於數據量比較大,所以用了多進程來實現。其實我對多進程/多線程的認識只是了解概念,第一次看到實際的應用是在BDCI-OCR的項目中,作者用多進程進行圖像處理。毫無疑問,並行計算能顯著地減少運行時間。
那麼為什麼用多進程實現並行計算(多核任務),不用多線程呢?
引用鏈接
網上有很多實現多進程的示例,我只記錄自己用過的。
這里我用的是pool.apply_async(),是非同步非阻塞的方法,可以理解為:不用等待當前進程執行完畢,隨時根據系統調度來進行進程切換。當然,還有其他方法,網上有很多資料,我就不贅述了。
從運行結果中可以發現:因為cpu最大核心數是8,所以前8個任務的進程id都不一樣,任務9的進程id與任務2的相同,即任務2執行結束後再執行任務9,依此類推。
模擬的事件:共需處理10個任務,每個任務執行時間為5秒(5 * time.sleep(1))
參考鏈接
發現:因為我的cpu是8核,所以10個任務的多進程耗時約為 2×單任務耗時 。
在查閱相關資料時發現,多進程在實際使用的時候有 單參數 和 多參數 之分,那麼多參數和單參數的優缺點分別是什麼呢?