使用多线程在Python中同时运行包含while循环的两个函数

时间:2017-02-20 21:05:57

标签: python multithreading

我试图在Python中同时运行两个函数。这两个函数都包含while个循环。我试图使用线程和多处理没有乐趣。只运行一个功能。我已经在Stack和net上阅读并尝试了几个例子。任何帮助,将不胜感激。提前致谢。我是Python的新手。

if __name__ == "__main__":
    ap = argparse.ArgumentParser()
    ap.add_argument("-c", "--conf", required=True,
       help="path to the JSON configuration file")
    args = vars(ap.parse_args())
#    p1 = Process(target=main(args))
#    p2 = Process(target=cameraHandler(args))
#    p1.start()
#    p2.start()

    threadA = Thread(target = main(args))
    threadB = Thread(target = cameraHandler(args))
    threadA.run()
    threadB.run()

    threadA.join()
    threadB.join()

1 个答案:

答案 0 :(得分:0)

在您的示例中,您有target = main(args)target = cameraHandler(args)。在这两种情况下,您都在调用函数本身,而不是让线程执行此操作。因此,只调用第一个,甚至永远不会创建threadA。您应该将函数本身(maincameraHandler)传递给Thread,而无需调用它们。

要解决此问题,请使用args的{​​{1}}关键字参数。您还应该使用Thread的{​​{1}}方法。

.start()

这假设Thread是您想要传递给每个函数的单个参数。如果它是您想传递的 all 元组的元组,请使用Thread(target=main, args=(args,)).start() Thread(target=cameraHandler, args=(args,)).start() 。例如,如果您希望线程运行args,请使用args=args