目录

-多线程使用场景

-多进程

 --简单的一个多进程例子

 --进程间数据的交互实现方法

   ---通过Queues和Pipe可以实现进程间数据的传递,但是不能实现数据的共享

   ---Queues

    ---Pipe

    ---通过Manager可以不同进程间实现数据的共享

 --进程同步,即进程锁

 --进程池

-协程

 --先用yield实现简单的协程

 --Greenlet

 --Gevent

 --用协程gevent写一个简单并发爬网页

-事件驱动

 --IO多路复用

   ---用户空间和内核空间

    ---文件描述符fd

    ---缓存IO

 --IO模式

   ---阻塞I/O(blocking IO)

    ---非阻塞I/O

    ---I/O多路复用(IO multiplexing)

    ---异步I/O(asynchronous IO)

-关于select poll epoll

 --select

 --poll

 --epoll

 --以select方法为例子进行理解

IO操作不占用CPU

计算占用cpu

python多线程不适合cpu密集型操作的任务,适合IO操作密集型的任务

多进程

简单的一个多进程例子:(用于理解对多线程方法的使用)

和线程的方法类似,下面是一个简单的多进程代码

 1 #AUTHOR:FAN
 2 import time,multiprocessing
 3 
 4 def run(name):
 5     time.sleep(2)
 6     print("hello",name)
 7 
 8 if __name__ =="__main__":
 9     for i in range(6):
10         p = multiprocessing.Process(target=run,args=("dean",))
11       p.start()

和之前学习的多线程结合在一起使用,代码如下:

 1 #AUTHOR:FAN
 2 
 3 import time,threading
 4 import multiprocessing
 5 
 6 def thread_run():
 7     print(threading.get_ident())   #这里表示获取线程id
 8 
 9 
10 def run(name):
11     time.sleep(2)
12     print("hello",name)
13     t=threading.Thread(target=thread_run)
14     t.start()
15 
16 if __name__ =="__main__":
17     for i in range(6):
18         p = multiprocessing.Process(target=run,args=("dean",))
19         p.start()

运行结果如下:

 1 D:\python35\python.exe D:/python培训/s14/day10/进程与线程结合使用.py
 2 hello dean
 3 10008
 4 hello dean
 5 9276
 6 hello dean
 7 8096
 8 hello dean
 9 1308
10 hello dean
11 hello dean
12 10112
13 8032
14 
15 Process finished with exit code 0
View Code

相关文章: