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')

原文地址:https://www.cnblogs.com/wangyujian/p/11892832.html