进程
(1)由于Python当初全局解释器锁的设计,导致了Python的使用线程的场合好像比较固定。
(2)大部分使用比较多的是进程,但是开销上进程肯定更大。但是针对日常的一些脚本的使用,简单的爬虫来说,都OK了。
(1)主要方法
from multiprocessing import Process, Pool, cpu_count
import os
# 获取进程pid:
os.getpid()
# 开始、结束、等待
p.start()
p.close()
p.join() # 等待子进程结束之后再继续执行。
(2)简单Demo
# 调用子进程
p = Process(target=func_name, args=('arg1', 'arg2'...)) # 这里面的参数指的是传入的func中会用到的参数
p.start()
p.join()
# 进程池
p = Pool(cpu_count())
for i in range(5):
p.apply_async(long_time_task, args(i, ))
p.close()
p.join()
(3)子进程
线程的进程之间的最大区别:
多线程和多进程最大的不同在于:
(1)多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响,
(2)而多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改,
因此,线程之间共享数据最大的危险在于多个线程同时改一个变量,把内容给改乱了。
网友评论