python27-多进程-进程池

152 阅读1分钟
# from multiprocessing import Process
# import time
# def method1(name):
#     time.sleep(1)
#     #并行
#     print('hello',name,time.ctime())
#
# if __name__ == '__main__':
#     l=[]
#     for i in range(3):
#         p = Process(target=method1,args=('fengfeng',))
#         l.append(p)
#         p.start()
#     for i in l:
#         i.join()
#     print('end')
#
# '''
# F:\pythonProject\first\venv\Scripts\python.exe F:/pythonProject/first/demo7/多进程模块.py
# hello fengfeng Mon Mar 12 15:40:30 2018
# hello fengfeng Mon Mar 12 15:40:30 2018
# hello fengfeng Mon Mar 12 15:40:30 2018
# end
# '''
from multiprocessing import Process
import os
import time


def info(title):
    print("title:", title)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())


def f(name):
    info('function f')
    print('hello', name)


if __name__ == '__main__':
    info('main process line')
    time.sleep(1)
    print("------------------")
    p = Process(target=info, args=('yuan',))
    p.start()
    p.join()

进程池

from  multiprocessing import Process,Pool
import time,os

def Foo(i):
    time.sleep(1)
    print(i)
    return str(i)+'fengfeng'
#回调函数的执行是在主进程之下的。
def Bar(arg):
    print(arg)
    # print(os.getpid())
    # print(os.getppid())
    # print('logger:',arg)

if __name__ == '__main__':
    pool = Pool(5)

    # Bar(1)
    # print("----------------")

    for i in range(10):
        # pool.apply(func=Foo, args=(i,))
        # pool.apply_async(func=Foo, args=(i,))
        pool.apply_async(func=Foo, args=(i,), callback=Bar)

    pool.close()
    pool.join()
    print('end')