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 = ['', '', '']
lst_vars_2 = ['', '', '']
func_var = [(lst_vars_1, None), (lst_vars_2, None)]
# 方法2
dict_vars_1 = {'m': '', 'n': '', 'o': ''}
dict_vars_2 = {'m': '', 'n': '', 'o': ''}
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
上一篇:okhttputils【 Android 一个改善的okHttp封装库】使用(一)


下一篇:Android二维码识别 开源项目ZXing的编译