python细节

  1. 在同一个线程里面,可以连续调用多次acquire,一定要注意acquire的次数和release的次数相同

  2. python解释器包含了python虚拟机 https://www.zhihu.com/question/59570108?sort=created

  3. for是按顺序执行,当其中卡主,会根据上下文进行切换到别的地方执行

  4. 在woindows下进行多进程编程,最好放在 if name == “main”: 内运行,不然会抛出异常

  5. from queue import PriorityQueue 优先级队列

  6. 队列本身是数据安全的

  7. python多进程编程的模块 from concurrent.futures import ThreadPoolExecutor 和 ProcessPoolExecutor

  8. os.fork() 会拷贝父进程创建一个子进程,只能在linux下使用;此时父进程和子进程会拷贝 so.fork()下的代码,也就是执行两次;

  9. 在等待进程池所有内容返回之前,必须将进程池close() 即: pool.close() pool.join()

  10. 向线程池里面添加任务用 submit() ,进程池用 .apply_async(函数名,args=(,))

  11. pool.imap() pool.imap_unordered() 使用进程池的两个方法

  12. 多线程的队列用于线程之间的通信(from queue import Queue),这个Queue只能用于多线程

  13. 多进程之间的通信 from mulitprocessing import Process,Queue,pool,Manager 【这个queue 不能用于pool进程池,Manager().Queue()可以用于进程之间的通信】

  14. 共享全局变量的方式只能用于多线程之间的通信,不能用于多进程之间的通信;多进程之间的数据是完全隔离的

  15. 多进程之间的通信可以使用 管道 Pipe() ,recevie_pipe,send_pipe = Pipe()

  16. 进程之间的通信 --》 共享内存 Manager().dick() 等数据结构

  17. 阻塞和非租塞主要是针对函数来说

  18. c10M问题 如何利用8核心cpu,64G内存,在10gbps的网络上保持1000万并发连接

  19. 协程-》有多个入口的函数,可以暂停的函数,可以向展厅的地方传入值得函数

  20. 在调用send发送非None值之前,我们必须启动一次生成器,方式有两种 1.gen.send(None) 2.next(gen)

  21. 关闭生成器,向生成器抛出异常【12章】

  22. yield 和yield from的区别

  23. yield from 会自动处理 StopIteration 异常【协程 return 会抛出的异常】

  24. 使用原生协程 async await 原生协程的调用只能使用send()

  25. 协程是单线程模式,不能再函数中写入耗时的操作,有耗时的操作一定要yield出去

  26. yield from 的用法: 在一个协程内调用另一个协程;调用方,委托生成器,子生成器;yield from 会在调用方与子生成器之间建立一个双向通道

你可能感兴趣的:(python)