php是最好的语言

python3利用多进程实现并发

这里有一个需求就是同时发起多个请求 其中一个请求先返回数据 就停止其他请求

from multiprocessing import Process,Pool
import time

allData = []
p = ""

#子进程任务
def one():
    time.sleep(1)
    return 'one'


# 子进程任务
def two():
    time.sleep(2)
    return 'two'

#主进程调用回调函数
def alterUser(msg):
    global allData
    global p

    allData.append(msg)

    p.terminate()

def index():
    start = time.time()
    global p
    p = Pool(2)
    p.apply_async(func=one, callback=alterUser)
    p.apply_async(func=two, callback=alterUser)

    # 当func执行完毕后,return的东西会给到回调函数callback
    print("---start----")
    p.close()  # 关闭进程池,关闭后,p不再接收新的请求。
    p.join()
    print("---end-----")

    end = time.time()
    print(end - start)

    global allData
    print(allData)


if __name__ == "__main__":
    index()


作者:xTao 分类:LNMP 浏览:2371 评论:0