对于具有多处理的循环,仅执行第一个循环

时间:2017-06-23 09:32:51

标签: python parallel-processing multiprocessing

我需要同时运行2个进程。在第一个文件中我有一个for循环,它调用函数并行运行2个方法,但它只做一个循环

在第一个文件中:

for i in range(5):
    class1.runInParallel(class1.acquireF(a, b), class1.readS(c,d))

在class1中:

from multiprocessing import Process
class Class1:

     def acquireF(self,a,b):
        #do something

     def readS(self,c,d):
        self.tSleep = 3
        #do something

     def runInParallel(self, acquireF, readS):
         p1 = Process(target = acquireF)
         p1.start()
         p2 = Process(target = readS)
         p2.start()
         p1.join()
         p2.join()

我读到它应该是关于主要过程不等待其孩子完成的事实。是这样吗?我怎么解决呢?谢谢

这可能是一个很好的解决方案吗? 在第一个文件中:

Thread(target = class1.acquireF(a,b)).start() 
Thread(target = class1.readS(c,d)).start() 

只是在class1

中的方法acquireF和readS

1 个答案:

答案 0 :(得分:0)

Process.join()等待进程完成,因为我们不知道你在进程中放了什么,我们无法提供帮助。

我的猜测是,由于p1.join(),你在acquireF中被阻止了。