1、zip:用于将多个列表中的元素进行组合
a=[1,2,3]
b=[4,5,6]
c=[6,7,8]
print(list(zip(a,b,c)))
#结果:[(1, 4, 6), (2, 5, 7), (3, 6, 8)]
2、lambda:简洁定义运算
map:将运算与实际数字结合
fun2=lambda x,y:x+y
print(list(map(fun2,[1,3],[4,5])))
#输出:[5, 8]
3、多线程
#duoxiancheng
import threading
import time
def thread_job():
#print('This is an added Thread,number is %s'%threading.current_thread())
print('T1 start\n')
for i in range(10):
time.sleep(0.1)
print('T1 finish\n')
def T2_job():
print('T2 start\n')
print('T2 finish\n')
def main():
added_thread=threading.Thread(target=thread_job(),name='T1')
thread2=threading.Thread(target=T2_job,name='T2')
added_thread.start()
thread2.start()
thread2.join()#等子线程运行完才运行主程序
print('all done\n')
main()
#输出
#T1 start
#T1 finish
#T2 start
#T2 finish
#all done
4、多线程解决问题
#duoxiancheng
import threading
import time
from queue import Queue
data=[[1,2,3],[3,4,5],[4,4,4],[5,5,5]]
def job(l,q):
for i in range(len(l)):
l[i]=l[i]**2
q.put(l)#线程中 不可直接返回 需要使用加入队列的方法
def multithreading(data):
q=Queue()
threads=[]
for i in range(4):#定义四个线程同时进行计算
t=threading.Thread(target=job,args=(data[i],q))
t.start()
threads.append(t)
for thread in threads:#将线程加入到主线程中 等到子线程运行完才运行主线程后续内容
thread.join()
results=[]
for i in range(4):#存储线程结果
results.append(q.get())
print(results)
multithreading(data )
#输出:[[1, 4, 9], [9, 16, 25], [16, 16, 16], [25, 25, 25]]
5、多线程 如果是单核的话采用的是流水的机制,所以得看任务的性质,用多线程不一定会大大缩短时间
6、缓冲池的使用:map与apply_async
map:一次可以调用一个进程
apply_async:一次只可以调用一个进程,可用图示迭代的方法实现与map同样的效果
目录不存在则新建
if not os.path.exists(filename2save):
os.makedirs(filename2save)