python多进程使用及线程池的使用方法

多进程:主要运行multiprocessing模块

import os,time
import sys
from multiprocessing import Process
 
class MyProcess(Process):
    """docstring for MyProcess"""
    def __init__(self, arg, callback):
        super(MyProcess, self).__init__()
        self.arg = arg
        self.callback = callback

    def run(self):
        self.callback(self.arg)
        

def test(arg):
    print("子进程{}开始>>> pid={}".format(arg,os.getpid()))
    for i in range(1,5):
        sys.stdout.write("子进程{}运行中{}\r".format(arg,i))
        sys.stdout.flush()
        time.sleep(1)
def main():
    print("主进程开始>>> pid={}".format(os.getpid()))
    myp=MyProcess(1,test)
    myp.start()
    myp2=MyProcess(2,test)
    myp2.start()
    myp.join()
    myp2.join()
    print("主进程终止")
 
if __name__ == '__main__':
    main()

线程池:主要运用了未来模块!下面例子,第一个是正常,第二第线程池,第三个用运行了2个线程池,会排队

from concurrent.futures import ThreadPoolExecutor
import time

def sayhello(a):
    print("hello: "+a)
    time.sleep(2)

def main():
    seed=["a","b","c"]
    start1=time.time()
    for each in seed:
        sayhello(each)
    end1=time.time()
    print("time1: "+str(end1-start1))
    start2=time.time()
    with ThreadPoolExecutor(3) as executor:
        for each in seed:
            executor.submit(sayhello,each)
    end2=time.time()
    print("time2: "+str(end2-start2))
    start3=time.time()
    with ThreadPoolExecutor(2) as executor1:
        executor1.map(sayhello,seed)
    end3=time.time()
    print("time3: "+str(end3-start3))

if __name__ == '__main__':
    main()

 

posted @ 2018-10-24 00:50  火鸟网络  阅读(784)  评论(0编辑  收藏  举报