zoukankan      html  css  js  c++  java
  • Python 线程与进程

    线程

    线程是一个任务,通过多个工人去完成。任务是一个任务,但是执行任务的人更多,从而提升任务执行时间。

    案例:Python 爬虫,爬取漫画网站,或者是爬取下载电影,任务是下载当前页面的所有电影资源,如果单线程的话,需要挨个下载。伪代码如下:

    # 耗时 len(URLs)*单次下载平均时间
    for
    URL in URLs: download(URL) save()

    如果多线程的话,耗时就远远小于总耗时时间。

    进程

    而每个进程,代表一个任务,然后我需要完成相同的这种任务,就开启多个进程。

    案例:笔者打算写一个设备的模拟器程序,使用 Modbus TCP 协议开发,一个进程扮演一个 Slave (从机)角色,当设备设置好监听端口后,它会不断的接收发送来自于 Master (主机)的通信请求,并作出响应。

    Demo

    1. 线程演示程序

    # 采用传参方式
    import
    time,threading def demo(n,id): while n >= 0: print('id:',id,'n:',n) n -= 1 time.sleep(1) def main(): t1 = threading.Thread(target=demo,args=(10,1)) t2 = threading.Thread(target=demo,args=(10,2)) t1.start() t2.start() t1.join() t2.join() print('exit') if __name__ == '__main__': main()

     2. 构造类

    import time,threading
    
    class A(threading.Thread):
        def __init__(self, p1,p2):
            threading.Thread.__init__(self)
            self.p1 = p1
            self.p2 = p2
    
        def run(self):
            n,i = self.p1,self.p2
            demo(n,i)
    
    
    def demo(n,id):
        while n >= 0:
            print('id:',id,'n:',n)
            n -= 1
            time.sleep(1)
    
    def main():
        t1 = A(10,1)
        t2 = A(10,2)
        
        t1.start()
        t2.start()
        t1.join()
        t2.join()
        print('exit')
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    linux 串口调试总结
    linux 环境变量的设置方法
    linux 内核的配置和编译
    linux 串口应用程序的编写指南
    linuxdifff 和 patch 的使用指南
    linux shell 的学习随笔
    特性阻抗和频率有关吗?
    linux source和export命令的使用
    关于SI设计与SI仿真的一点浅见
    LINUX下的tty,console与串口分析
  • 原文地址:https://www.cnblogs.com/yqmcu/p/9782083.html
Copyright © 2011-2022 走看看