zoukankan      html  css  js  c++  java
  • day40——多线程共享变量、线程池

     线程共享变量

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

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

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

     1 import threadpool
     2 
     3 
     4 def hello(m, n, o):
     5     """"""
     6     print "m = %s, n = %s, o = %s" % (m, n, o)
     7 
     8 
     9 if __name__ == '__main__':
    10     # 方法1
    11     lst_vars_1 = ['1', '2', '3']
    12     lst_vars_2 = ['4', '5', '6']
    13     func_var = [(lst_vars_1, None), (lst_vars_2, None)]
    14     # 方法2
    15     dict_vars_1 = {'m': '1', 'n': '2', 'o': '3'}
    16     dict_vars_2 = {'m': '4', 'n': '5', 'o': '6'}
    17     func_var = [(None, dict_vars_1), (None, dict_vars_2)]
    18 
    19     pool = threadpool.ThreadPool(2)
    20     requests = threadpool.makeRequests(hello, func_var)
    21     [pool.putRequest(req) for req in requests]
    22     pool.wait()
    23 
    24 输出结果
    25 m = 1, n = 2, o = 3
    26 m = 4, n = 5, o = 6
  • 相关阅读:
    [考试]20151017数据结构
    [考试]20151016动态规划
    [考试]20151015分治
    [BZOJ1501/NOI2005]智慧珠游戏
    [BZOJ3139/HNOI2013]比赛
    [考试]20151013搜索
    BZOJ3082: Graph2
    BZOJ4690: Never Wait for Weights
    BZOJ4668: 冷战
    BZOJ3262: 陌上花开
  • 原文地址:https://www.cnblogs.com/yangjinbiao/p/8041242.html
Copyright © 2011-2022 走看看