[python]解决将 python 程序输出结果重定向到文件时,出现 UnicodeDecodeError 错误

比如:有一个 python 程序 hello.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

print u'你好'

将输出结果重定向到文件,就会出现 UnicodeEncodeError:

$ python hello.py > hello.txt
Traceback (most recent call last):
  File "hello.py", line 4, in <module>
    print u'你好'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not ...
more ...

[python]使用 multiprocessing.dummy 执行多线程任务

本文将简单讲述一种使用 multiprocessing.dummy 模块执行多线程任务的方法。

multiprocessing.dummy 模块与 multiprocessing 模块的区别: dummy 模块是多线程,而 multiprocessing 是多进程, api 都是通用的。 所有可以很方便将代码在多线程和多进程之间切换。

下面是一个示例:

# from multiprocessing import Pool
from multiprocessing.dummy import Pool as ThreadPool
import time
import urllib2

urls = [
    'http://www.baidu.com',
    'http://home.baidu.com/',
    'http://tieba.baidu.com/',
    'http://zhidao.baidu.com ...
more ...

[python]输出一个简单的进度条

使用 sys.stdoutsys.stderr 就可以输出一个简单的进度条:

import time
import sys

f = sys.stdout

for n in range(1, 101):
    s = ('#' * n).ljust(100, '-')
    f.write(s)
    f.flush()
    time.sleep(0.3)
    f.write('\r')
f.write('\n')
more ...