Python多进程在unittest中不起作用

0 投票
2 回答
1497 浏览
提问于 2025-04-20 13:40

我在我的单元测试中运行这个:

    # test thread safe
    def test_process(i):
        print i 
        time.sleep(1)
        print i, i

    for i in range(100):
        p = Process(target=test_process(), args=(i,))
        p.start()

但是它是一个接一个地运行:

0
0 0
1
1 1
2
2 2
3
3 3
4
4 4
5
5 5
6
6 6
7
7 7

我本来期待它能先打印出所有的单个 i,我哪里做错了呢?

2 个回答

0

真是笨,我直接用()来调用这个函数。

这样做是有效的:

p = Process(target=test_process, args=(i,))
2

你的问题是你在下面这一行过早地调用了 test_process

p = Process(target=test_process(), args=(i,))

把这一行换成

p = Process(target=test_process, args=(i,))

这样它就只会在新进程被创建后执行一次。

撰写回答