溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用R語(yǔ)言和Python制作任務(wù)進(jìn)度管理

發(fā)布時(shí)間:2021-10-11 17:57:50 來源:億速云 閱讀:111 作者:柒染 欄目:大數(shù)據(jù)

如何用R語(yǔ)言和Python制作任務(wù)進(jìn)度管理,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

一直覺得運(yùn)行代碼的時(shí)候,如果有一個(gè)提示任務(wù)運(yùn)行進(jìn)度的進(jìn)度條提示就好,很多時(shí)候我們的程序運(yùn)行時(shí)間普遍較長(zhǎng),如果程序運(yùn)行沒有任何提示,那簡(jiǎn)直是一場(chǎng)噩夢(mèng),根本不知道到底是程序在偷懶還是真的卡住了,而如果再代碼里寫print函數(shù),循環(huán)較多的話,你的屏幕會(huì)被打印的提示文本瞬間刷屏。

后來經(jīng)過搜索,還真讓我發(fā)現(xiàn)了解決方法。今天給大家介紹兩個(gè)包,這兩個(gè)包可以做任務(wù)任務(wù)處理、進(jìn)程處理工作,編寫一些簡(jiǎn)易的交互界面。

這里僅介紹簡(jiǎn)單的用法,僅僅滿足我們?nèi)粘H蝿?wù)進(jìn)度提示即可。

library("tcltk")
library("tcltk2")

主要掌握以下兩個(gè)主要函數(shù):

設(shè)置進(jìn)度條的格式

tkProgressBar(
    title = "R progress bar",   #任務(wù)進(jìn)度名稱
    label = "",                 #任務(wù)進(jìn)度標(biāo)簽
    min = 0,                    #初始進(jìn)度
    max = 1,                    #末尾進(jìn)度
    initial = 0,                #起始位置
    width = 300                 #進(jìn)度條寬度
    )

開啟進(jìn)度條

setTkProgressBar(
    pb,              #可用進(jìn)度條
    value,           #進(jìn)度值
    title = NULL,    #標(biāo)題
    label = NULL     #標(biāo)簽
    )
library("rvest")
library("downloader") url<-"https://www.zhihu.com/question/35931586/answer/206258333"
link<- read_html(url)%>% html_nodes("div.RichContent-inner>span")%>% html_nodes("img")%>%html_attr("data-original") %>% na.omit   link<-link[seq(1,length(link),by=2)] %>% sample(size=10)                 Name<-sub("https://pic\\d.zhimg.com/v2-","",link)     dir.create("D:/R/Image/zhihu0807")             setwd("D:/R/Image/zhihu0807")
plot.new()
pb<-tkProgressBar("進(jìn)度","已完成 %",0,100)     
for(i in 1:length(link)){
    info <- sprintf("已完成 %d%%",round(i*100/length(link)))
    setTkProgressBar(pb,i*100/length(link),sprintf("進(jìn)度 (%s)",info),info)
    download(link[i],Name[i], mode = "wb")
    Sys.sleep(0.5)
} 
close(pb)  
#關(guān)閉進(jìn)度條(這個(gè)要等任務(wù)完成再寫,不要寫在函數(shù)里哈)

如何用R語(yǔ)言和Python制作任務(wù)進(jìn)度管理

而tcltk2包則可以自定義更多的進(jìn)度條屬性和外觀界面,使得進(jìn)度條更具個(gè)性化。

library("tcltk2")
###開啟進(jìn)度條
root <- tktoplevel() l1   <- tk2label(root) pb1  <- tk2progress(root,length=300) tkconfigure(pb1,value=0,maximum=9) tkgrid(l1, row = 0) tkgrid(pb1,row = 1)
plot.new()
for(index in 1:length(link)){    download(link[i],Name[i], mode = "wb")    Sys.sleep(0.5)    
   ###進(jìn)度管理:    tkconfigure(l1, text = paste("Index",index))    tkconfigure(pb1,value=index-1)    Sys.sleep(0.5) } tkdestroy(root)  
#關(guān)閉進(jìn)度條

如何用R語(yǔ)言和Python制作任務(wù)進(jìn)度管理

是不是很人性化呀~~~以后運(yùn)行大型程序,再也不會(huì)心里沒底兒啦,看著進(jìn)度條就可以知道你的程序到底運(yùn)行到多少啦。

既然R語(yǔ)言可以執(zhí)行進(jìn)度管理,相比Python里面肯定也可以實(shí)現(xiàn)的,我找了一些,但是大部分都是基于Py2的,而且代碼量都不小,看到大塊的代碼我就害怕,最后找到一個(gè)代碼量算少的,簡(jiǎn)單介紹一些,希望能給大家打來幫助。

import os
import re
import time
import sys
import urllib import requests
import random from bs4 import BeautifulSoup
url="https://www.zhihu.com/question/35931586/answer/206258333"
header = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'} page=requests.get(url,headers=header) soup=BeautifulSoup(page.text,'lxml') link_list=[pip.get('data-original') for pip in soup.select("div[class='RichContent-inner'] span img")] link_list=random.sample(link_list,10)   os.makedirs("D:/Python/zhihu0807") os.chdir('D:/Python/zhihu0807')
for i in range(len(link_list)):
    name=re.findall(r"v2-.*?\.jpg",link_list[i])[0]
    urllib.request.urlretrieve(link_list[i],name)
    sys.stdout.write('\r')
    sys.stdout.write("%s%% |%s" %(int(i%len(link_list)), int(i%len(link_list))*'#'))
    sys.stdout.flush()
    time.sleep(0.5)

如何用R語(yǔ)言和Python制作任務(wù)進(jìn)度管理

要想制作出專業(yè)美觀的任務(wù)進(jìn)度管理程序,有很多第三方包可以用,甚至可以自己寫帶有彈出功能的工具條,只是那樣就失去簡(jiǎn)便性了, 感興趣的可以自行探索!

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI