【发布时间】:2021-08-23 20:20:04
【问题描述】:
所以当我在与我的 print 相同的代码中导入 multiprocessing 后跟 time.sleep 时,它将打印字符串 3 次,而不是我请求的 1 次。我想知道为什么会发生这种情况以及如果可能的话如何解决这个问题,提前谢谢你。我的代码如下。
import time
import multiprocessing
print('teeeest')
time.sleep(3)
def test1():
print('test1')
def test2():
print('test2')
if __name__ == '__main__':
p1 = multiprocessing.Process(target=test1)
p2 = multiprocessing.Process(target=test2)
p1.start()
p2.start()
p1.join()
p2.join()
而代码的结果如下:
teeeest
teeeest
teeeest
test1
test2
(注意“test1”和“test2”按预期同时发送)
【问题讨论】:
-
@jsbueno Macos 做同样的事情。
-
MacOS 没有工作的“fork”吗?
-
MacOS 不只使用 fork Linux。 @jsbueno
-
是的 - 我检查了一下 - 他们在 Python 3.8 上不再使用 fork。