最近我在玩python多线程时发现了一个有趣的结果。当使用下面的代码时,stdout确实很乱(肯定是,因为没有使用锁)
from multiprocessing.pool import ThreadPool
def printInt(x):
print x*x
pool = ThreadPool(processes=4)
args = [i for i in range(100)]
jobs = []
jobs += [job for job in pool.map(printInt, args) if job]
pool.close()
pool.join()
部分输出:
31
32
3342
43
401344
但是将os.system()与echo一起使用不会出现此问题。
import os
def printInt(x):
os.system("echo {0}".format(x))
部分输出:
58
59
60
61
62
34
77
任何人都可以从python视图和操作系统视图中帮助解释这一点吗?谢谢!