Python中另一个函数内的并发方法



我是新手,在python中进行多处理,到目前为止,我看到的所有示例都是这种示例(文件中有一个或多个方法,然后' main (:

from multiprocessing import Process
def f1(a):
    #do something
def f2(b):
    #do something
if __name__ == '__main__':
    f1(a1)
    p = Process(target=f2, args=(b2,))
    p.start()
    p.join()

如果我有一个方法,该方法将在另一个文件中称为另一个文件中的2个函数,例如以下行,

def function():
    #do something
    file2.f1(a) #first concurrent method
    file2.f2(b) #second concurrent method

我应该怎么做?谁能举一个简单的例子?我以这种方式尝试了,但是它在第一个循环之后再次启动了所有程序:

 def function():
    #do something
    for i in range(3):
       p1 = Process(target=file2.f1, args=(a)) #first concurrent method
       p2 = Process(target=file2.f2, args=(b)) #second concurrent method
       p1.start()
       p2.start()
       p1.join()
       p2.join()   

问题似乎是args varialbe的定义错误,它应该是元组,而不是一个变量:

def function():
    #do something
    for i in range(3):
       p1 = Process(target=file2.f1, args=(a, )) #first concurrent method
       p2 = Process(target=file2.f2, args=(b, )) #second concurrent method
       p1.start()
       p2.start()
       p1.join()
       p2.join()

如果您的执行顺序灵活,则可以使用池类类触发多个呼叫:

from multiprocessing.pool import Pool
pool = Pool()
pool.map_async(f1, [(arg, )] * 3)
pool.map_async(f2, [(arg, )] * 3)
pool.close()
pool.join()

最新更新