2013-12-03 94 views
-2

我想要一個python程序,允許用戶通過並行進程下載web圖像。以下是代碼:Python:線程不工作

from threading import Thread 
from uuid import uuid4 
import urllib 
import re 

def concurrent_run(fun, j): 
    for i in j: 
     Thread(target=fn, args=(i)).start() 

def find_image(i): 
    newpath = '/Users/*******/Desktop'+str(uuid4())+".jpg" 
    if not os.path.exists(newpath): os.makedirs(newpath) 
    f=open(newpath,'wb') 
    f.write(from_page(i)) 
    f.close() 

def all_images(i): 
    images = re.findall('img=',i) 
    return [images[i] for i in xrange(0,len(images))] 

def read_page(u): 
    return urllib.urlopen(u).read() 

concurrent_run(find_image, all_images(read_page('http://www.google.com'))) 

...沒有什麼似乎發生?請有人指出我出錯的地方嗎?

謝謝

+0

你能項目列表的算法中你正試圖實施? – Giupo

回答

4
  • fn不匹配參數名fun

    def concurrent_run(fun, j): 
        #    ^^^ 
        for i in j: 
         Thread(target=fn, args=(i)).start() 
         #    ^^  ^^^ 
    
  • ARGS應該是一個元組:args=(i,)

+0

列出的另一個小問題:我認爲他在find_image函數中缺少一個「/」爲newpath創建字符串;那麼爲什麼os.makedirs呢? ... – Giupo