Python:多线程print的时候界面很乱

在多线程中调用同一个函数print数据的时候,界面很乱
代码如下:

def test(url):
    print url
pool = ThreadPool(10)
for url in self.urls:
    pool.add_job(test,url)
pool.wait(numtasks=10)

如图所示


如果需要在test函数中使用临界区,那岂不是很麻烦吗?
如下虽然使用锁机制来解决了:

self.mutex = threading.Lock()
....
def test(url):
    time.sleep(1)
    self.mutex.acquire()
    print url
    self.mutex.release()

pool = ThreadPool(10)
for url in self.urls:
    pool.add_job(test,url)
pool.wait(numtasks=10)

毕竟,在项目中类似test的函数有很多。
不知道有没有更好的解决办法?

查看回复