1. 程式人生 > >golang學習 ---併發獲取多個URL

golang學習 ---併發獲取多個URL

package main

import (
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"os"
	"time"
)

func main() {
	start := time.Now()
	ch := make(chan string)
	for _, url := range os.Args[1:] {
		go fetch(url, ch) // start a goroutine
	}
	for range os.Args[1:] {
		fmt.Println(<-ch) // receive from channel ch
	}
	fmt.Printf("%.2fs elapsed\n", time.Since(start).Seconds())
}

func fetch(url string, ch chan<- string) {
	start := time.Now()
	resp, err := http.Get(url)
	if err != nil {
		ch <- fmt.Sprint(err) // send to channel ch
		return
	}

	nbytes, err := io.Copy(ioutil.Discard, resp.Body)
	resp.Body.Close() // don't leak resources
	if err != nil {
		ch <- fmt.Sprintf("while reading %s: %v", url, err)
		return
	}
	secs := time.Since(start).Seconds()
	ch <- fmt.Sprintf("%.2fs  %7d  %s", secs, nbytes, url)
}

相關推薦

golang學習 ---併發獲取URL

package main import ( "fmt" "io" "io/ioutil" "net/http" "os" "time" ) func main() { start := time.Now() ch := make(chan string) for _, url := r

《Java高併發程式設計》學習 --7.10 Actor同時修改資料:Agent

在Actor的程式設計模型中,Actor之間主要通過訊息進行資訊傳遞。因此,很少發生多個Actor需要訪問一個共享變數的情況。但在實際開發中,這種情況很難完全避免。如果多個Actor需要對同一個共享變數進行讀寫時,如何保證執行緒安全呢? 在Akka中,使用一種叫做Agent

golang併發下載檔案

背景說明 假設有一個分散式檔案系統,現需要從該系統中併發下載一部分檔案到本地機器。 已知該檔案系統的部分節點ip, 以及需要下載的檔案fileID列表,並能通過這些資訊來拼接下載地址。 其中節點ip列表儲存在xx_node.txt, 要下載的fileID儲

python基礎一 ------如何獲取字典相同的鍵

class dom 集合 pre app wke 生成 參數 tool 需求: 足球賽第一場進去統計 {"A":3,"B":2,"C":1}足球賽第二場進去統計 {"A":3,"C":1}足球賽第二場進去統計 {"A":2,"B":2}統計每場都有進球的人----&g

Java 《Effective Java 中文版 第2版》學習筆記 遇到構造器時要考慮用構建器

fec 利用 客戶端代碼 except car beans pri 很好 種類   靜態工廠和構造器有個共同的局限性:它們都不能很好地擴展到大量的可選參數。   當一個類中有若幹個必選屬性和多個可選屬性時,采用重疊構造器模式、JavaBeans模式或者Builder模式,但

KindEditor獲取textarea文本框的值並判斷非空

div 編輯器 fill star fontsize 取值 pop 獲取 sta kindeditor官網:http://kindeditor.net/demo.php 如何獲取多個KindEditor中textarea文本框的值,方式很多種(帶有HTML標簽)。

jquery怎樣獲取復選框的值?

target ssa cti contain 樣式 val value css樣式 UNC jquery的遍歷方法可以獲取復選框所欲的選中值 1 2 $("input:checkbox:checked").each(function(index,element

python如何獲取excel單元格的值

load 解決 info ace 多層嵌套 traceback spa 數據 多個 一. 獲取多個單元格的值報錯:AttributeError: ‘tuple‘ object has no attribute ‘value‘ 需要讀取的sample.xlsx 代碼讀取的是

在一個gradle 的maven property 裏添加URL

public http let rac mod TE fab OS tps 這樣是會報錯的 repositories { mavenCentral() maven { url "http://maven.springframewo

jmeter 正則獲取返回token至本地文件,並跨線程組調用

mage 表達 processor csv文件 參數 res 例如 通過 mark 1、打開jmeter,創建setup Thread Group對於setup Thread Group和tearDown Thread Group來說,從字面意思上來看就是安裝線程組和卸載線

linux學習-添加硬盤和lvm配置

list aid 參數 nbsp 新建 only irix 單詞 color 一般,服務器會有多個硬盤,一塊硬盤分區安裝操作系統,另外多塊硬盤分區做存儲使用。現在測試添加多塊硬盤分區,使用lvm進行實現動態磁盤分配。 1.新增硬盤查看fdisk -l可以看到新增的兩塊硬盤s

在js中無法獲取id值為demo的問題

例如程式碼中: <script> $(document).ready(function(){ $("#demo").hover(function(){ $("h1").css("background-color","yellow"); },function(){

springmvc介面引數中,獲取物件

需求:儲存或者修改時,前端傳多個相同型別的物件,後臺獲取 方法1:(麻煩,不推介) 前臺 :前端資料,通過在名稱加序號,譬如:[{"name_0":"can","sex_0",1},{"name_1":"phil","sex_0",0}] 後臺:通過遍歷,request.get

一個Filter配置url-pattern

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

海思3531獲取攝像頭在整個螢幕的畫面

要想獲取整個攝像頭畫面在整個螢幕的畫面只需要比平常的操作多一步即可,例如通常海思SDK通常提供的VENC例子裡的流程是:VI->VPSS->VENC,而我們把他修改成VI->VPSS->虛擬VO->VENC,這樣我們就可以獲取所有攝像頭在螢幕顯示的畫面。虛擬VO配置如下

Webdriver獲取元素

官方通過如下程式碼獲取多個元素: Java程式碼   List<WebElement> inputs = driver.findElements(By.xpath("//input"));&n

filter配置url-pattern和排除個別servlet

                最近做專案遇到一個Filter需要配置多個url-pattern,上網查了下資料,經測試,現總結下

JQuery 同時獲取標籤的指定內容並儲存為陣列

文章來自:原始碼線上https://www.shengli.me/jquery/271.html       此時的list1的陣列中   每個元素已經不是'li'物件,如此執行控制檯會報錯: &nbs

web.xml中一個filter配置url-pattern

需要在filter標籤後新增多個filter-mapping標籤,一個url-pattern就對應一個filter-mapping標籤,不能直接把多個url-pattern配置到同一個filter-mapping標籤裡,也不能直接把多個url直接配置到一個url-pattern標籤裡。 正確地配置方式如下所

爬取url頁面資料--手動實現

# -*- coding: utf-8 -*- import scrapy from qiubaiByPages.items import QiubaibypagesItem class QiubaiSpider(scrapy.Spider): name = 'qiubai'