zoukankan      html  css  js  c++  java
  • day41-python多进程多线程-多线程共享

    线程共享变量
    多线程和多进程不同之处在于多线程本身就是可以和父进程共享内存的,这也是为什么其中一个线程挂掉以后,为什么其他线程也会死掉的道理。

    import threading
    
    
    
    def worker():
        l.append("wxp")
        l.append("wxx")
        l.append("wpp")
    
    if __name__ == "__main__":
        l = list()
        l += range(1, 10)
        print(l)
        t = threading.Thread(target=worker)
        t.start()
        print(l)
    
    输出结果:
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 'wxp', 'wxx', 'wpp']

    线程池(不常用,了解即可)
    通过传入一个参数组来实现多线程,并且它的多线程是有序的,顺序与参数组中的参数顺序保持一致。
    安装包:
    pip install threadpool

    import threadpool
    
    
    def hello(m, n, o):
        """"""
        print "m = %s, n = %s, o = %s" % (m, n, o)
    
    
    if __name__ == '__main__':
        # 方法1
        lst_vars_1 = ['1', '2', '3']
        lst_vars_2 = ['4', '5', '6']
        func_var = [(lst_vars_1, None), (lst_vars_2, None)]
        # 方法2
        dict_vars_1 = {'m': '1', 'n': '2', 'o': '3'}
        dict_vars_2 = {'m': '4', 'n': '5', 'o': '6'}
        func_var = [(None, dict_vars_1), (None, dict_vars_2)]
    
        pool = threadpool.ThreadPool(2)
        requests = threadpool.makeRequests(hello, func_var)
        [pool.putRequest(req) for req in requests]
        pool.wait()
    
    输出结果
    m = 1, n = 2, o = 3
    m = 4, n = 5, o = 6
  • 相关阅读:
    rmq +二分暴力 hdu 5726
    8.25 ccpc 比赛总结
    莫比乌斯反演题目总结
    HDU 4848 Wow! Such Conquering! (搜索+floyd)
    Codeforces 982 C Cut 'em all!(DFS)
    Codefoces 986C AND Graph(DFS)
    CodeForces 986A Fair(BFS)
    ACM经验贴
    Kattis A+B Problem(FFT)
    CF E. Porcelain (双向dp)
  • 原文地址:https://www.cnblogs.com/wxp997/p/8040257.html
Copyright © 2011-2022 走看看