python multiprocessing 多线程的使用

  • A+
所属分类:Python

基础概念

python multiprocessing 多线程的使用

进程(process):任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。

线程(thread):一个进程可以包括多个线程。一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。

同步(synchronous):在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。

异步(asynchronous ):*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知调用者,或通过回调函数处理这个调用。

阻塞:调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。

非堵塞:在不能立刻得到结果之前,该调用不会阻塞当前线程。

主菜

https://docs.python.org/3.6/library/multiprocessing.html

map用法

map只能将一个数据传入到f中,map的第二个参数必须是可迭代的。

运行结果

apply可传入多个参数,但只会一个p.apply(f, [4, 5])运行完后才会运行下一个,同步的。apply_async异步的更好些。res = pool.apply_async(f, (20,)) res.get(timeout=1)获得异步结果。

结果:

注意:

  1. 停止IDE并不会结束程序的运行
  2. 记录好pid,方便删除
  3. 对大程序来说,记录好用时,防焦虑。datetime.datetime.now()
LTXU

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: