zoukankan      html  css  js  c++  java
  • 多线程,守护线程,多进程

                                               多线程
    import threading#调用多线程包
    import time
    l =[]
    res_num=[]#多线程是没法获取返回值的,所以只能通过在函数内把返回值添加到list里面
    def num(a,b):
    time.sleep(1)
    c = a+b
    res_num.append(c)#把返回值添加到list,因为多线程是无法获取返回值的

    t =threading.Thread(target=num,args=(1,2))#q启动一个子线程,taeget=函数名,args=这个函数传的参数,是元组类型
    for i in range(10):
    t1 = threading.Thread(target=num, args=(1, 2))#启动10个线程
    l.append(t1)#把线程对象加到列表内
    t1.start()#运行线程
    for u in l:
    u.join()#让主线程等待子线程运行结束后再继续往下走
    print(u)#如果不加join,主线程不管子线程是否运行完都会往下执行
    print('子线程运行结束后,在打印我',res_num)
                                     # 守护线程
    import threading,time
    def haha():
    time.sleep(2)
    print('hahah')
    for i in range(10):
    t = threading.Thread(target=haha)
    t.setDaemon(True)#守护线程,只要主线程运行结束了,不管子线程是否执行完毕,直接结束
    t.start()

    # 多进程 多进程也有和线程一样的join方法等
    from multiprocessing import Process
    def test(i):
    time.sleep(1)
    print(i)
    if __name__ == '__main__':
    for i in range(5):
    p =Process(target=test,args=('aaa',))
    p.start()
  • 相关阅读:
    图文详解 Android Binder跨进程通信机制 原理
    支链氨基酸怎么吃
    C#泛型约束
    树状结构 Tree data structure in C#
    wrap ConcurrentDictionary in BlockingCollection
    ConcurrentBag扩展 批量加入
    Dictionary GetOrAdd
    ConcurrentDictionary AddOrUpdate
    object pool
    C# 结构体定义 转换字节数组 z
  • 原文地址:https://www.cnblogs.com/lanxia/p/8005490.html
Copyright © 2011-2022 走看看