为什么使用os.system()不会弄乱python多线程中的stdout?

时间:2019-04-12 18:01:52

标签: python multithreading python-2.7 operating-system

最近我在玩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视图和操作系统视图中帮助解释这一点吗?谢谢!

0 个答案:

没有答案