python 多线程,,1、进程的线程共享进
python 多线程,,1、进程的线程共享进
1、进程的线程共享进程的资源
2、线程的目的
异步:我想异步做一件事情,总的执行流继续往下走
并行(多线程):同时做很多件事情
单线程作用是异步
3、如何把一件事情放到线程中去做
import threading
t = threading.Thread(target=func,args=[])
t.start
只需掌握两个参数
1、target 后面跟做的事情 函数名
2、args 后边跟着函数的参数
import threadingimport timedef sleep(): time.sleep(5) print(‘5 second‘) return ‘money‘t = threading.Thread(target=sleep)t.start()
函数带参数的 (参数的小括号可以换成中括号)
原生线程调用方式缺点
1、传参数不得劲
2、函数的返回值无法得到
封装的线程类 utils.py
#coding:gbkimport threadingimport timeclass FuncThread(threading.Thread): def __init__(self, func, *args, **kwargs): super(FuncThread, self).__init__() self.func = func self.args = args self.kwargs = kwargs self.finished = False self.result = None def run(self): self.result = self.func(*self.args, **self.kwargs) self.finished = True def is_finished(self): return self.finished def get_result(self): return self.resultdef sleep(n): time.sleep(n) print(‘sleep %s second‘ % n) return ‘money‘def do_in_thread(func, *args, **kwargs): ft = FuncThread(func, *args, **kwargs) ft.start() return ftt = do_in_thread(sleep, 2)time.sleep(2.5)print(t.get_result())
可以拿到线程的返回结果
封装线程的使用方法
do_in_thread(func_name,参数)
多线程怎么办?在for循环中起多个单线程即可utils.py#coding:gbkimport threadingclass FuncThread(threading.Thread): def __init__(self, func, *args, **kwargs): super(FuncThread, self).__init__() self.func = func self.args = args self.kwargs = kwargs self.finished = False self.result = None def run(self): self.result = self.func(*self.args, **self.kwargs) self.finished = True def is_finished(self): return self.finished def get_result(self): return self.resultdef do_in_thread(func, *args, **kwargs): ft = FuncThread(func, *args, **kwargs) ft.start() return ft
#coding:utf-8import timeimport osimport utilsdef check_file_exist(file_name): return os.path.exists(file_name)
#超时处理函数
def handle_timeout(func, timeout, *args, **kwargs): interval = 1 ret = None while timeout > 0: begin_time = time.time() ret = func(*args, **kwargs) if ret: break time.sleep(interval) timeout -= time.time() - begin_time return retdef dump_data(): time.sleep(100) f = open(r‘C:\Users\Martin\Desktop\finish‘, ‘w‘) f.close()utils.do_in_thread(dump_data)"""在一分钟之内检查桌面上是否有finish这样一个文件,如果有,返回True, 如果没有,继续检查,知道超时"""print(handle_timeout(check_file_exist, 5, r‘C:\Users\Martin\Desktop\finish‘))
python 多线程
相关内容
- Python 学习之for与break的用法,, Pytho
- Python中文分词 jieba,,三种分词模式与一个参
- Python——深入理解urllib、urllib2及requests(requests不建议
- 关于python中argsort()函数的使用,,在实现《机器学习实战
- 使用 python 将 "\r\n" 转换为 "\n&
- Python lower()方法,,描述Python l
- python count()函数,,Python 元组
- 利用python打印特殊符号,,1、方法一,调用字符
- 一个智障安装了一天的python和graphlab的血泪史,,大概的
- Python的OO思想,,想当年大二的时候,在
评论关闭