首页 > 编程 > Python > 正文

python多进程使用及线程池的使用方法代码详解

2020-02-15 23:21:52
字体:
来源:转载
供稿:网友

多进程:主要运行multiprocessing模块

import os,timeimport sysfrom multiprocessing import Processclass 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 ThreadPoolExecutorimport timedef 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()

总结

以上所述是小编给大家介绍的python多进程使用及线程池的使用方法代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林站长站网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表