1import multiprocessing
2import random
3import sys
4import time
5
6def fill_queue(queue, code):
7    queue.put(code)
8
9
10def drain_queue(queue, code):
11    if code != queue.get():
12        sys.exit(1)
13
14
15def test_func():
16    code = random.randrange(0, 1000)
17    queue = multiprocessing.Queue()
18    fill_pool = multiprocessing.Process(
19        target=fill_queue,
20        args=(queue, code)
21    )
22    drain_pool = multiprocessing.Process(
23        target=drain_queue,
24        args=(queue, code)
25    )
26    drain_pool.start()
27    fill_pool.start()
28    fill_pool.join()
29    drain_pool.join()
30
31
32def main():
33    test_pool = multiprocessing.Process(target=test_func)
34    test_pool.start()
35    test_pool.join()
36    sys.exit(test_pool.exitcode)
37
38
39if __name__ == "__main__":
40    main()
41