线程的基本使用:

import threading
# ###################### 1.线程的基本使用
def func(arg):
print(arg) t = threading.Thread(target=func,args=(11,))
t.start() print(123) # #################### 2.主线程默认等子线程执行完毕
mport time
def func(arg):
time.sleep(arg)
print(arg) t1 = threading.Thread(target=func,args=(3,))
t1.start() t2 = threading.Thread(target=func,args=(9,))
t2.start() print(123) # ############ 3.主线程不再等,主线程终止则所有子线程终止 import time
def func(arg):
time.sleep(2)
print(arg) t1 = threading.Thread(target=func,args=(3,))
t1.setDaemon(True)
t1.start() t2 = threading.Thread(target=func,args=(9,))
t2.setDaemon(True)
t2.start() print(123) # ######### 4.开发者可以控制主线程等待子线程(最多等待时间) import time
def func(arg):
time.sleep(0.01)
print(arg) print('创建子线程t1')
t1 = threading.Thread(target=func,args=(3,))
t1.start()
# 无参数,让主线程在这里等着,等到子线程t1执行完毕,才可以继续往下走。
# 有参数,让主线程在这里最多等待n秒,无论是否执行完毕,会继续往下走。
t1.join(2) print('创建子线程t2')
t2 = threading.Thread(target=func,args=(9,))
t2.start()
t2.join(2) # 让主线程在这里等着,等到子线程t2执行完毕,才可以继续往下走。 print(123)

threading

(附加:获取当前执行该函数的线程的对象)

def func(arg):
# 获取当前执行该函数的线程的对象
t = threading.current_thread()
# 根据当前线程对象获取当前线程名称
name = t.getName()
print(name,arg) t1 = threading.Thread(target=func,args=(11,))
t1.setName('侯明魏')
t1.start() t2 = threading.Thread(target=func,args=(22,))
t2.setName('刘宁钱')
t2.start() print(123)

current_thread()

线程池:

from concurrent.futures import ThreadPoolExecutor
import time def task(a1,a2):
time.sleep(2)
print(a1,a2) # 创建了一个线程池(最多5个线程)
pool = ThreadPoolExecutor(5) for i in range(40):
# 去线程池中申请一个线程,让线程执行task函数。
pool.submit(task,i,8)

ThreadPoolExecutor

进程的基本使用:

# ##################### 进程间的数据不共享
import multiprocessing
data_list = [] def task(arg):
data_list.append(arg)
print(data_list) def run():
for i in range(10):
p = multiprocessing.Process(target=task,args=(i,))
# p = threading.Thread(target=task,args=(i,))
p.start() if __name__ == '__main__':
run() # ##################### 进程常用功能 import time
def task(arg):
time.sleep(2)
print(arg) def run():
print('')
p1 = multiprocessing.Process(target=task,args=(1,))
p1.name = 'pp1'
p1.start()
print('') p2 = multiprocessing.Process(target=task, args=(2,))
p2.name = 'pp2'
p2.start()
print('') if __name__ == '__main__':
run() # ##################### 通过继承方式创建进程 class MyProcess(multiprocessing.Process): def run(self):
print('当前进程',multiprocessing.current_process()) def run():
p1 = MyProcess()
p1.start() p2 = MyProcess()
p2.start() if __name__ == '__main__':
run()

multiprocessing

进程数据共享:

# ############ 进程间的数据共享:multiprocessing.Queue

import multiprocessing
q = multiprocessing.Queue() def task(arg,q):
q.put(arg) def run():
for i in range(10):
p = multiprocessing.Process(target=task, args=(i, q,))
p.start() while True:
v = q.get()
print(v)
run() # ##################### 进程间的数据共享:Manager def task(arg,dic):
time.sleep(2)
dic[arg] = 100 if __name__ == '__main__':
m = multiprocessing.Manager() process_list = []
for i in range(10):
p = multiprocessing.Process(target=task, args=(i,dic,))
p.start() process_list.append(p) while True:
count = 0
for p in process_list:
if not p.is_alive():
count += 1
if count == len(process_list):
break
print(dic) # ##################### 进程间的数据其他电脑 def task(arg,dic):
pass if __name__ == '__main__':
while True:
# 连接上指定的服务器
# 去机器上获取url
url = 'adfasdf'
p = multiprocessing.Process(target=task, args=(url,))
p.start()

Queue

进程池:

import time
from concurrent.futures import ProcessPoolExecutor def task(arg):
time.sleep(2)
print(arg) if __name__ == '__main__': pool = ProcessPoolExecutor(5)
for i in range(10):
pool.submit(task,i)

ProcessPoolExecutor

python 线程/进程模块的更多相关文章

  1. python 线程 进程

    1.进程与线程优.缺点的比较总言:使用进程和线程的目的,提高执行效率. 进程: 优点:能利用机器的多核性能,同时进行多个操作. 缺点:需要耗费资源,重新开辟内存空间,耗内存. 线程: 优点:共享内存( ...

  2. python 线程 进程 协程 学习

    转载自大神博客:http://www.cnblogs.com/aylin/p/5601969.html 仅供学习使用···· python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和 ...

  3. python线程进程

    多道技术: 多道程序设计技术 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬.软件资源.当一道程序因I/O请 ...

  4. Python 线程&进程与协程

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  5. Python 线程池模块threadpool 、 concurrent.futures 的 ThreadPoolExecutor

    一.threadpool   基本用法 pip install threadpool pool = ThreadPool(poolsize) requests = makeRequests(some_ ...

  6. python 线程进程

      一 线程的2种调用方式 直接调用 实例1: import threading import time def sayhi(num): #定义每个线程要运行的函数 print("runni ...

  7. python线程,进程,队列和缓存

    一.线程 threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 创建线程的两种方式1.threading.Thread import threading def f1(arg): ...

  8. python 线程,进程28原则

    基于函数实现 from threading import Thread def fun(data, *args, **kwargs): """ :param data: ...

  9. python 线程 进程 标识

    s = '%s%s%s%s%s%s%s%s' % ( time.strftime('%Y%m%d %H:%M:%S', time.localtime(time.time())), ' os.getpp ...

随机推荐

  1. c#中事务及回滚

    程序一般在特殊数据的时候,会有数据上的同步,这个时候就用到了事物.闲话不多说,直接上代码. public void UpdateContactTableByDataSet(DataSet ds, st ...

  2. hdu2732

    题解: 和上一题差不多 然后注意格式 代码: #include<cstdio> #include<cmath> #include<algorithm> #inclu ...

  3. hdu 6034 Balala Power!

    Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  4. 极简MarkDown教程(常用样式)

    推荐编辑软件,NotePad++ & MarkDownViewer++(插件),以下内容为MarkDown格式,可自行放到编辑软件中查看,或在线查看 #### . 标题 > 用#+空格开 ...

  5. 【后台测试】postman简介

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/6266047.html 在接口测试的过程中,经常拿到一个接口 ...

  6. Unix系统中system函数的返回值

    网上关于system函数的返回值说明很多很详细但却不直观,这里搬出apue 3rd Editon中实现system函数的代码来说明其返回值. #include <sys/wait.h> # ...

  7. NI FPGA板卡程序设计概述

    NI公司提到了三种不同应用开发环境ADE:http://www.ni.com/white-paper/5956/zhs/ LabVIEW是NI公司主推的ADE,采用G语言(图像化语言),支持力度最大 ...

  8. 多网卡下,vlc发送IGMP组播报告包

    这两天测试IGMP遇到一个问题,环境描述如下: 我的vlc客户端安装在windows下,该PC有两张网卡,本地连接1接公司网,本地链接2 接路由器.wireshark坚挺本地链接2,以测试路由的IGM ...

  9. New Concept English three(14)

    06:55:29 32w/m 45words. There was a time when the owners of shop and businesses in Chicago had to pa ...

  10. 概念:GNU构建系统和Autotool

    经常使用Linux的开发人员或者运维人员,可能对configure->make->make install相当熟悉.事实上,这叫GNU构建系统,利用脚本和make程序在特定平台上构建软件. ...