我试图在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()
答案 0 :(得分:0)
在您的示例中,您有target = main(args)
和target = cameraHandler(args)
。在这两种情况下,您都在调用函数本身,而不是让线程执行此操作。因此,只调用第一个,甚至永远不会创建threadA
。您应该将函数本身(main
和cameraHandler
)传递给Thread
,,而无需调用它们。
要解决此问题,请使用args
的{{1}}关键字参数。您还应该使用Thread
的{{1}}方法。
.start()
这假设Thread
是您想要传递给每个函数的单个参数。如果它是您想传递的 all 元组的元组,请使用Thread(target=main, args=(args,)).start()
Thread(target=cameraHandler, args=(args,)).start()
。例如,如果您希望线程运行args
,请使用args=args
。