zoukankan      html  css  js  c++  java
  • python多线程,多进程

    一.多线程

    1.进程是多个资源的集合。
    2.线程是就是进程里面具体干活的。
    3.线程和线程之间是互相独立的。
    4.如果多线程运行函数,需要把线程放到字典里,否则函数拿不到返回值

    import threading

    def down_load():

      print('完毕!')

    for i in rang(5):

      t = threading.Thread(target=down_load,args=(url,))  # 如果函数里有多个参数,那么需要加args字段

      t.start()

    print(threading.activeCount())   #查看当前线程数
    print(threading.current_thread())  #查看当前线程

    二.线程池

    pool = threadpool.ThreadPool(20)  #实例化一个线程池
    reqs = threadpool.makeRequests(down_load_pic,url_list)  #分配数据
    [pool.putRequest(req) for req in reqs]
    # for req in reqs:
    # pool.putRequest(req)
    print(threading.activeCount())
    pool.wait() #等待
    print('end')

    三.锁

    多个线程操作同一个数据的时候,就得加锁

    import threading

    lock = threading.Lock() #申请一把锁

    lock.acquire()  #加锁
    lock.release()  #解锁    #如果不解锁就会变成死锁

    # with lock:  简写,用with也会帮你加锁,解锁

    四.多进程

    import multiprocessing,time
    def down_load():
      time.sleep(2)
      print("运行完了")

    if __name__ == '__main__':    # win下需要加这个函数,否则报错
      for i in range(5):
      p = multiprocessing.Process(target=down_load)
      p.start()

      while len(multiprocessing.active_children())!=0:  #等待子进程结束
      pass

      print(multiprocessing.current_process())

      print('end')

  • 相关阅读:
    css3
    如何去渲染数据?
    ajax
    Java多线程-线程安全
    java多线程-基础
    Git-团队开放中的代码同步与提交
    IDEA 调试Spring-boot 应用
    微服务-各种pom的配置和注解
    微服务-服务与注册中心
    微服务
  • 原文地址:https://www.cnblogs.com/wangyujian/p/11892832.html
Copyright © 2011-2022 走看看