python多线程

Python连载36-线程数量限制、Timer、可重入锁

匿名 (未验证) 提交于 2019-12-02 22:51:30
一、允许一个资源最多由几个线程同时进行 命令行:threading.Semaphore(个数) 代表现在最多有几个线程可以进行操作 import threading import time #参数定义了最多几个线程可以使用资源 semaphore = threading.Semaphore(3)#这里就是指最多有三个线程可以进行操作 def func(): if semaphore.acquire(): for i in range(2): print(threading.current_thread().getName() + "get semapore") time.sleep(5) semaphore.release() print(threading.current_thread().getName() + "release semaphore") for i in range(8): t1 = threading.Thread(target=func,args=()) t1.start() 二、Timer讲解 格式:threading.Timer(时间间隔,函数) 代表这个函数在“时间间隔”的时间之后启动 def func2(): print("I am running.....") time.sleep(3) print("I an done.......") if _

python多线程交替打印abc以及线程池进程池的相关概念

匿名 (未验证) 提交于 2019-12-02 22:51:30
import threading import sys import time def showa(): while True: lockc.acquire() #获取对方的锁,释放自己的锁 print('a',end='') sys.stdout.flush() #释放缓冲区 locka.release() time.sleep(0.2) def showb(): while True: locka.acquire() print('b',end='') sys.stdout.flush() lockb.release() time.sleep(0.2) def showc(): while True: lockb.acquire() print('c',end='') sys.stdout.flush() lockc.release() time.sleep(0.2) if __name__=='__main__': locka=threading.Lock() #定义3个互斥锁 lockb=threading.Lock() lockc=threading.Lock() t1=threading.Thread(target=showa) #定义3个线程 t2=threading.Thread(target=showb) t3=threading.Thread(target

aardio_多线程使用Python

匿名 (未验证) 提交于 2019-12-02 22:51:30
1、在主线程导入Python库   import py; 2、在主线程释放GIL   py.releaseThread(); 3、调用Python脚本(必须在py.lock中调用Python脚本,否则会报错)   a.主线程中调用:      py.lock(       function(){         test1 = py.import("test1");         test1.run();       }     )   b.子线程中调用:     import py; // 子线程需要重新导入Python库       function(){         test2 = py.import("test2");         test2.run();       }     )

concurrent.futures模块简单介绍(线程池,进程池)

匿名 (未验证) 提交于 2019-12-02 22:51:30
一、基类Executor Executor类是ThreadPoolExecutor 和ProcessPoolExecutor 的基类。它为我们提供了如下方法: submit(fn, *args, **kwargs):提交任务。以 fn(*args **kwargs) 方式执行并返回 Future 对像。 fn:函数地址。 *args:位置参数。 **kwargs:关键字参数。 map(func, *iterables, timeout=None, chunksize=1): func:函数地址。 iterables:一个可迭代对象,以迭代的方式将参数传递给函数。 timeout:这个参数没弄明白,如果是None等待所有进程结束。 chunksize:使用 ProcessPoolExecutor 时,这个方法会将 iterables 分割任务块,并作为独立的任务提交到执行池中。这些块的数量可以由 chunksize 指定设置。 对很长的迭代器来说,设置chunksize 值比默认值 1 能显著地提高性能。 chunksize 对 ThreadPoolExecutor 没有效果。 shutdown(wait=True):如果为True会等待线程池或进程池执行完成后释放正在使用的资源。如果 wait 为 False,将立即返回,所有待执行的期程完成执行后会释放已分配的资源。 不管

Selenium3+python自动化016-多线程

匿名 (未验证) 提交于 2019-12-02 22:51:30
1、进程   什么是进程?   进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。   程序:例如xxx.py这是程序,是一个静态的   进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。 2、线程 什么是线程?   线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。   线程是程序中一个单一的顺序控制流程。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。 3、线程与进程的区别   进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ(QQ双开、微信双开)   线程,能够完成多任务,比如 一个QQ中的多个聊天窗口(一个人同时跟多个妹子聊天)   一个程序至少有一个进程,一个进程至少有一个线程.   线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高。  

python多线程爆破压缩包密码

匿名 (未验证) 提交于 2019-12-02 22:51:30
import zipfile from threading import Thread #多线程库 import optparse #选定字典或者文件 def extractFile(zfile,password): try: zfile.extractall(pwd=password) print('[+] found password' + password +'\n') except: pass def main(): #zfile=zipfile.ZipFile('decode.zip') #passfile=open('dictionmary.txt') parser=optparse.OptionParser("usage%prog "+\ "-f<zipfile> -d <dictionmary>") parser.add_option('-f',dest='zname',type='string',\ help='specify zip file') parser.add_option('-d',dest='dname',type='string',\ help='specify sictionary file') (options,args)=parser.parse_args() if (options.zname==None) | (options.dname

Python threading模块

匿名 (未验证) 提交于 2019-12-02 22:51:30
threading模块是Python里面常用的线程模块。提高处理任务的效率 进程和线程的区别: 进程: 线程: 进程不是越多越好,一般CPU个数=进程个数 线程也不是越多越好,请求上下文切换耗时 计算机执行任务的最小单元:线程 threading创建多个线程,但是是快速切换的(由于GIL锁的存在) #!/usr/bin/env python # -*- coding: utf-8 -*- import datetime import time import threading def backup(backup_number_per,backup_server_ip,check_time_period): current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 统计备份策略表里所有的目标备份机,然后每个线程用一个备份机进行备份 backup_server_ip_list = ['172.10.10.1','172.10.10.2','172.10.10.3'] thread_list = [] #线程存放列表 backup_number_per=3 # 每次最多备份几个DB check_time_period=10 for backup_server_ip in backup_server_ip

Python说文解字_Python之多任务_01

匿名 (未验证) 提交于 2019-12-02 22:51:08
Python 之 多任务:   Python之多任务是现在多任务编程运用Python语言为载体的一种体现。其中涵盖:进程、线程、并发等方面的内容,以及包括近些年在大数据运算、人工智能领域运用强大的GPU运算能力实现的各种算法。属于Python语言中比较高级的应用形式。文章采取问答的形式对知识点和相关应用的模式进行详解,看似像意识流形态的文章,其内容也是遵循循序渐进,力求全面和精细。 问:什么是多任务? 答:百度定义:“当多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务。”也就是说操作系统可以同时运行多个任务。这个概念是基于操作系统来说的。比如电脑同时开启多个软件或者应用程序,这就是一种多任务的体现;于此相对如果我们电脑只能每次开启一个软件或者一个应用程序,关闭前者才能开启后者这就叫做单任务,在早期的电脑基本都属于单任务,对于现在的计算机应用基本上都属于多任务的形式存在,因此我们也只讨论多任务。 问:CPU是整个运算的核心,CPU、操作系统、多任务之间的关系什么? 答:1. 现在的CPU基本上都是2核以上的CPU,如果我们现在手里有一台单核的CPU和一台多核CPU,我们的多任务在上面又是怎么实现的呢?     1.1. 单核CPU实现多任务原理?       操作系统轮流让各个任务交替执行,CPU对每个任务进行“时间切片”的动作,这个切片时间非常短暂

Python多线程一学就会!

匿名 (未验证) 提交于 2019-12-02 22:51:08
Python中使用线程有两种方式:函数或者用类来包装线程对象。 函数式:调用thread模块中的start_new_thread()函数来产生新线程。语法如下: thread.start_new_thread ( function, args[, kwargs] ) 参数说明: function - 线程函数。 args - 传递给线程函数的参数,他必须是个tuple类型。 kwargs - 可选参数。 实例: #!/usr/bin/python# -*- coding: UTF-8 -*-import threadimport time# 为线程定义一个函数def print_time( threadName, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print "%s: %s" % ( threadName, time.ctime(time.time()) )# 创建两个线程try: thread.start_new_thread( print_time, ("Thread-1", 2, ) ) thread.start_new_thread( print_time, ("Thread-2", 4, ) )except: print "Error: unable to start

Python开发网站目录扫描器

匿名 (未验证) 提交于 2019-12-02 22:51:08
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_38682860/article/details/90754094 有人问为什么要去扫描网站目录:懂的人自然懂 这个Python脚本的特点: 1.基本完善 2.界面美观(只是画了个图案) 3.可选参数增加了线程数 4.User Agent细节处理 5.多线程显示进度 扫描目标:Metasploitable Linux 代码:WebDirScanner.py: 需要一个字典文件: 我存进去了一些,一部分是确定存在的目录 dict.txt 结果:得到一个HTML文件: 脚本的使用: 文章来源: https://blog.csdn.net/sinat_38682860/article/details/90754094