Python多处理不在unittest中工作

时间:2014-09-08 23:20:57

标签: python multiprocessing unit-testing

在我的unittest中运行:

    # 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 :(得分:2)

您的问题是您过早地在以下行中调用test_process

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

替换此行
p = Process(target=test_process, args=(i,))

因此只有在生成新进程后才会执行。

答案 1 :(得分:0)

愚蠢的我,我通过提供()

来启动这项功能

这有效:

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