1. python下载(http)文件并保存
import urllib2
request = urllib2.Request("http://www.appchina.com/market/r/639017/com.sohu.inputmethod.sogou.apk?channel=aplus.direct&p=aplus.index&uid=gAJ9cQFVC3ZlcmlmeV9jb2RlcQJVBGt1dWxxA3Mu1UNbT0ifMPYMADcmCTSaFDqhBcjWwME7w&page=appplus.category&ref=appplus.main")
response = urllib2.urlopen(request)
#test
file_size = int(response.headers['content-length'])
print file_zise
#test
with open("E:\\tmp\\tmp.apk", 'wb') as output:
while True:
buffer = response.read(1024*256)
if not buffer:
break
output.write(buffer)
或者
import urllib
import os
def reporthook(blocks_read, block_size, total_size):
"""total_size is reported in bytes.
block_size is the amount read each time.
blocks_read is the number of blocks successfully read.
"""
if not blocks_read:
print 'Connection opened'
return
if total_size < 0:
# Unknown size
print 'Read %d blocks (%d bytes)' % (blocks_read,
blocks_read * block_size)
else:
amount_read = blocks_read * block_size
print 'Read %d blocks, or %d/%d' % \
(blocks_read, amount_read, total_size)
return
try:
filename, msg = urllib.urlretrieve(
'http://blog.doughellmann.com/',
reporthook=reporthook)
print
print 'File:', filename
print 'Headers:'
print msg
print 'File exists before cleanup:', os.path.exists(filename)
finally:
urllib.urlcleanup()
print 'File still exists:', os.path.exists(filename)
2. 线程示例
import thread,time
count = 0
lock = thread.allocate_lock()
def threadTest():
global count, lock
#lock.acquire()
for i in range(10000):
count += 1
#lock.release()
for i in range(10):
thread.start_new_thread(threadTest, ())
time.sleep(3)
print count;
3. threading的线程示例
import threading,time,random
count = 0;
class ThreadClass(threading.Thread):
def __init__(self, lock, threadName):
threading.Thread.__init__(self, name = threadName)
self.lock = lock
print threadName
def run(self):
global count
self.lock.acquire()
for i in range(10000):
count += 1
print count
self.lock.release()
lock = threading.Lock()
for i in range(10):
ThreadClass(lock, "thread-" + str(i)).start()
time.sleep(3)
print count
4. 队列应用
import threading,Queue,time
queue = Queue.Queue(0)
SIZE = 15
class ThreadClass(threading.Thread):
def __init__(self, job, type):
super(ThreadClass, self).__init__()
self.job = job
self.type = type
def run(self):
while True:
if self.job.qsize() > 0:
data = self.job.get()
taskfun(data, self.type)
else:
print
print "thread-%s no job \n" %str(self.type)
print
break
def taskfun(data, type):
time.sleep(1)
print "data=%s,type=%s" %(str(data), str(type))
for j in range(3):
queue.put(j)
print "queue size:%s" %str(queue.qsize())
for i in range(10):
ThreadClass(queue, i).start()
time.sleep(5)