zoukankan      html  css  js  c++  java
  • python

    最基本的多进程示例:

    import threading
    import time
    
    def bar(start_time,sleep_time):
        print ('is start_time: ......',start_time)
        time.sleep(sleep_time)
        print ('sleep done,',sleep_time)
    
    if __name__ == '__main__':
        b1 = threading.Thread(target=bar,args=(time.time(),44))
        b2 = threading.Thread(target=bar,args=(time.time(),65))
        b1.start()
        b2.start()
    
        print ('script done!')

    join:

      等待至线程中止。阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。

    import threading
    import time
    def bar(name,sleep_time):
        print ('is start_time: ......',name)
        time.sleep(sleep_time)
        print ('sleep done,',sleep_time)
    if __name__ == '__main__':
        b1 = threading.Thread(target=bar,args=('name_1',2))
        b2 = threading.Thread(target=bar,args=('name_2',3))
    
        b1.start()
        b2.start()
        b1.join()
    
        print ('script done!')
    
    # is start_time: ...... name_1
    # is start_time: ...... name_2
    # sleep done, 2
    # script done!
    # sleep done, 3

    setDaemon(daemonic) :

      设置守护线程标志为布尔值daemonic。它必须在start()调用之前被调用。

    import threading
    import time
    def bar(name,sleep_time):
        print ('is start_time: ......',name)
        time.sleep(sleep_time)
        print ('sleep done,',name)
    if __name__ == '__main__':
        threahs = list()
    
        b1 = threading.Thread(target=bar,args=('name_1',2))
        threahs.append(b1)
        b2 = threading.Thread(target=bar,args=('name_2',3))
        threahs.append(b2)
    
        b2.setDaemon(True)
        for i in threahs:
            i.start()
    
        print ('script done!')
    
    # is start_time: ...... name_1
    # is start_time: ...... name_2
    # script done!
    # sleep done, name_1

    此处b2是daemon进程,所以在主进程运行完成时直接退出。不会去理会b2的进程是否执行完成。

    getName()
      返回线程名。

    setName(name)
      设置线程名。
      这名字是只用来进行标识目的的字符串。它没有其他作用。多个线程可以取同一名字。最初的名字通过构造函数设置。

    isAlive()
      返回线程是否活动的。

    isDaemon()
      返回线程的守护线程标志

    run()
      用以表示线程活动的方法。你可能在Python Thread类的子类重写这方法。标准的 run()方法调用作为target传递给对象构造函数的回调对象。

    并发&并行

    并发:

      是指系统具有处理多个任务(动作)的能力

    并行:

      是指系统具有同时处理多个任务(动作)的能力

    同步&异步

    同步:在发出一个功能调用时,在没有得到结果之前,该调用就不会返回,直到有返回值了才继续执行。

      类似打电话时,等待接电话的过程。

    异步:在发出一个功能调用是,如果没有得到结果,则继续执行。一旦有返回结果了,可以再继续使用返回结果接着执行。

      类似发短信,不需要对方立即回复。即可继续做其他事情,当对方回复短信了,则再处理短信。

  • 相关阅读:
    JS数组(JSON)整合篇-方法整理
    C#匿名对象(转JSON)互转、动态添加属性
    js操作ListBox列表(select)内移动
    w5cValidator【AngularJS】 2.0 版本发布
    {{angular.js 使用技巧}}
    {{angular.js 使用技巧}}
    关于cocoapods添加静态库的奇葩配置
    寻觅[Getting Answers]
    前端和后端开发的异同
    micro-service构建平台
  • 原文地址:https://www.cnblogs.com/qikang/p/8934747.html
Copyright © 2011-2022 走看看