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

2018-10-24 08:43:37来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

多进程:主要运行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()

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:day 05 字典

下一篇:Python学习-列表的转换和增加操作