argparse、configparse、quene、Threading、subprocess模块

argpsrse模块

# 1.argparse功能
# 是python的命令解析的第三方包,可以直接让我们在命令行向程序里传参和修改参数

# 2.例子

# import argparse
# parser = argparse.ArgumentParser() # 创建ArgumentParser对象
# parser.add_argument('number', help='请输入数字', type=int) # 添加必选参数
# parser.add_argument('str', help="请输入字符串", type=str) # 添加必选参数
# args = parser.parse_args() # 解析参数
# print(args.number + 10)
# print(args.str)

# 然后打开命令行运行 python argparse_test.py 10 du
# 输出:20 du   # 按照添加参数的顺序输入参数,要不然会报错
# 输入:python argparse_test.py -h 会输出所有的提示信息

# 3.可选参数(与默认值default)、必选参数

# import argparse
# parser = argparse.ArgumentParser() # 创建ArgumentParser对象
# subparser = parser.add_subparsers(title = 'subcommands', description='')
# parser.add_argument('--number', help='请输入数字', type=int) # 添加可选参数
# parser.add_argument('--str', help="请输入字符串", type=str, default= 'hello', required=True) # 添加可选参数
# # required=true时变为了必选参数
# # default='xxxx' 可选参数,不输入参数时会输出默认值
# args = parser.parse_args() # 解析参数
# print(args)
# print(args.number + 10)
# print(args.str)

# 打开命令行运行python argparse_test.py  --number=3 --str='du'
# 可选参数命令行输入时得用  --xxx=ooo 格式
# 输出:Namespace(number=3, str="'du'")

# 4. action

# import argparse
# parser = argparse.ArgumentParser() # 创建ArgumentParser对象
# parser.add_argument('--xxx', help='请输入', action='store_true')
# args = parser.parse_args() # 解析参数
# print(args.xxx)

# action=‘store_true’,在运行时该变量不需要传入参数(且不能传入参数),只要写明该变量他就自动就变为True,如果不写该变量则为False
# 打开命令行运行 python argparse_test.py --xxx  输出:True

configparser模块

# read_ini.py
import configparser

config = configparser.ConfigParser()
config.read('test.ini')

# 1.获取sections
print(config.sections()) # ['section1', 'section2']

# 2.获取某一section下的所有options
print(config.options('section1'))  # ['k1', 'k2', 'user', 'age', 'is_admin', 'salary']

# 3.获取items
print(config.items('section1')) # [('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]

# 4.获取具体的值
res = config.get('section1', 'user')
print(res) # egon

res = config.getint('section1', 'age') # 18
print(res)

res = config.getboolean('section1', 'is_admin')
print(res)  # True

res = config.getfloat('section1', 'salary')
print(res) # 31.0

# test.ini
[section1]
k1 = v1
k2: v2
user = egon
age = 18
is_admin = true
salary = 31


[section2]
k1 = v1

quene模块

import queue

q= queue.Queue()
for i in range(5):
    q.put(6)

print(q.qsize())

Threading模块

# 1. 多线程 join
import threading
import time

# def thread_job():
#     print('t1 start')
#     for i in range(5):
#         print(i)
#         time.sleep(0.1)
#     print('t1 end')
# t = threading.Thread(target=thread_job, name='t1')
# t.start()
# t.join()  # 等待子线程t执行完毕,再执行后边代码
# print('all done...')

# 2. 多线程的Quene功能
import threading
from queue import Queue

def job(l, q):
    for i in range(len(l)):
        l[i] = l[i] ** 2
    q.put(l)  # 将计算结果放到q

def multiThreading():
    q = Queue()
    threads = []  # 装四个线程
    data = [[1, 2, 3], [4, 5, 6], [6, 6, 6], [8, 8, 8]]
    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 = []  # 将结果从q队列中取出,放到result并输出、
    for _ in range(4):
        results.append(q.get())
    print('The results is: {}'.format(results))

if __name__ == "__main__":
    multiThreading()

# 3. 多线程GIL锁

import threading
from queue import Queue
import copy
import time

# def job(l, q):
#     res = sum(l)
#     q.put(res)
#
# def multithreading(l):
#     q = Queue()
#     threads = []
#     for i in range(4):
#         t = threading.Thread(target=job, args=(copy.copy(l), q), name='T%i' % i)
#         t.start()
#         threads.append(t)
#     [t.join() for t in threads]
#     total = 0
#     for _ in range(4):
#         total += q.get()
#     print(total)
# def normal(l):
#     total = sum(l)
#     print(total)
#
# if __name__ == '__main__':
#     # 不用多线程方法
#     l = list(range(1000000))
#     s_t = time.time()
#     normal(l * 4)
#     print('normal: ', time.time() - s_t)
#
#     # 用多线程方法
#     s_t = time.time()
#     multithreading(l)
#     print('multithreading: ', time.time() - s_t)


# 4. lock锁

import threading
# 无锁

# def job1():
#     global A
#     for i in range(10):
#         A+=1
#         print('job1',A)
#
# def job2():
#     global A
#     for i in range(10):
#         A+=10
#         print('job2',A)
#
# if __name__== '__main__':
#     A=0
#     t1=threading.Thread(target=job1)
#     t2=threading.Thread(target=job2)
#     t1.start()
#     t2.start()
#     t1.join()
#     t2.join()

import threading
# 有锁

# def job1():
#     global A,lock
#     lock.acquire()4
#     for i in range(10):
#         A+=1
#         print('job1',A)
#     lock.release()
#
# def job2():
#     global A,lock
#     lock.acquire()
#     for i in range(10):
#         A+=10
#         print('job2',A)
#     lock.release()
#
# if __name__== '__main__':
#     lock=threading.Lock()
#     A=0
#     t1=threading.Thread(target=job1)
#     t2=threading.Thread(target=job2)
#     t1.start()
#     t2.start()
#     t1.join()
#     t2.join()

subprocess模块

import subprocess

res1 = subprocess.Popen(
    "dir | findstr html*",  # 使用管道符号运行命令
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
)

result = res1.stdout.read()
result= str(result,encoding="gbk")
print(result)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值