Tôi đã triển khai trình tải xuống đa xử lý. Làm cách nào để in thanh trạng thái (tỷ lệ hoàn thành, tốc độ tải xuống) có thể tự động làm mới ở một phần khác trên thiết bị đầu cuối.In lại làm mới động của đa xử lý hoặc đa luồng trong Python
Như thế này:
499712 [6.79%] 68k/s // keep refreshing
122712 [16.79%] 42k/s // different process/thread
99712 [56.32%] 10k/s
mã:
download(...)
...
f = open(tmp_file_path, 'wb')
print "Downloading: %s Bytes: %s" % (self.file_name, self.file_size)
file_size_dl = 0
block_sz = 8192
start_time = time.time()
while True:
buffer = self.opening.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
end_time = time.time()
cost_time = end_time - start_time
if cost_time == 0:
cost_time = 1
status = "\r%10d [%3.2f%%] %3dk/s" % (file_size_dl,
file_size_dl * 100./self.file_size,
file_size_dl * 100./1024/1024/cost_time)
print status,
sys.stdout.flush()
f.close()
DownloadProcess kế thừa lớp Process và kích hoạt các phương pháp tải về.
Tôi sử dụng hàng đợi để lưu trữ url. Dưới đây là quá trình
...
for i in range(3):
t = DownloadProcess(queue)
t.start()
for url in urls:
queue.put(url)
queue.join()
Ông có thể cũng cung cấp đến mã cho chúng tôi để cải thiện? –
http://excess.org/urwid/ có thể giúp bạn, nhưng chỉ về việc cung cấp cho bạn các widget có vị trí đẹp cho công việc. Bạn sẽ cần phải có một 'đầu' quản lý tất cả các danh sách bạn đang hiển thị đang chạy trong quy trình tổng thể. Nó rất có thể dễ dàng hơn để làm một trang web tho. – synthesizerpatel
@MarkGarcia Đã cập nhật –