Python上的并行处理[重复]
Posted
技术标签:
【中文标题】Python上的并行处理[重复]【英文标题】:Parallel Processing on Python [duplicate] 【发布时间】:2016-10-16 05:11:24 【问题描述】:我是 python 和多处理的初学者,所以如果这个问题看起来很幼稚,请原谅我。 我有两个要同时运行的功能。一个是人脸识别的openCV实现,另一个是标准的python代码。
def main():
does(s) # a function call
def face():
recog.main() #another call
您可以猜到,这两个函数都是最终用户函数,必须调用它们才能实现任务。我希望它们同时运行。
有关此主题的先前答案建议使用线程模块,但我已经尝试过,但它不起作用。第一个功能。首先执行要调用的,然后执行第二个。我的一个朋友推荐了 rospy 模块。这是唯一的方法吗?感谢期待。
编辑:在回答这个问题时,Make 2 functions run at the same time,一位用户写道,线程实际上不会使两个函数同时运行
【问题讨论】:
关于此主题的先前答案建议线程模块,但我已经尝试过但它不起作用您尝试了什么,提供minimal reproducible example。也看看Dead simple example of using Multiprocessing Queue, Pool and Locking thread.start_new_thread(main()) thread.start_new_thread(face()) 这不会同时运行它们。相反,将它们一一完成。我尝试了线程模块tutorialspoint.com/python/python_multithreading.htm,但结果是一样的。 如果你不使用 ROS,不要使用 rospy 只并行运行。这不是它的本意,它会让你对 ROS 产生不必要的依赖。 【参考方案1】:我使用multiprocessing module 来并行运行两个函数。对于我所做的(更改为您的情况):
import multiprocessing
def main():
does(s) # a function call
def face():
recog.main() #another call
# Initiate two workers for the two functions
workerMAIN = multiprocessing.Process(target=main)
workerFACE = multiprocessing.Process(target=face)
# Start the workers
workerMAIN.start()
workerFACE.start()
# Wait until the functions have finished
workerMAIN.join()
workerFACE.join()
【讨论】:
非常感谢先生!我曾使用 target 关键字尝试过多处理模块,但它没有奏效。不过,这是一个后续问题。名称是必要的参数吗?谢谢 不,不是:在example in 16.6.1.1 中,您可以看到Process(target=f, args=('bob',))
。所以你可以删除名称部分!我会更新我的答案:)
对我来说,这也是我正在寻找的例子。就像 @Spock 我查看了建议的重复项,但直到我实现了上面的代码才能让它工作以上是关于Python上的并行处理[重复]的主要内容,如果未能解决你的问题,请参考以下文章
您好有个问题请教一下cpu怎么和gpu并行计算处理好日常软件