使用sys.stdout的多处理IO错误

时间:2019-07-01 14:42:40

标签: python io multiprocessing

我从here复制了一个简单的代码,似乎没有错误,因为作者声称已使用python 3.7.1对它进行了测试,而我使用的是python 3.7.3,它是最新的稳定版本。

下面是代码:

import multiprocessing
import sys


def worker_with(lock, stream):
    with lock:
        stream.write('Lock acquired via with\n')


def worker_no_with(lock, stream):
    lock.acquire()
    try:
        stream.write('Lock acquired directly\n')
    finally:
        lock.release()


lock = multiprocessing.Lock()
w = multiprocessing.Process(
    target=worker_with,
    args=(lock, sys.stdout),
)
nw = multiprocessing.Process(
    target=worker_no_with,
    args=(lock, sys.stdout),
)

w.start()
nw.start()

w.join()
nw.join()

错误类似于:TypeError: cannot serialize '_io.TextIOWrapper' object。有人可以指出发生了什么事吗?

0 个答案:

没有答案