Python中进程无法结束的处理办法
1.方法一 http://hi.baidu.com/javalang/item/72fabf2359a30b464799625e
也就是说当线程使用start方法运行起来后,只有当run方法运行结束,一个线程才会结束。
import threading
from threading import Thread
import time
class MyThread(Thread):
over=False
def __init__(self):
Thread.__init__(self)
def run(self):
while not self.over:
print "hello"
time.sleep(2)
def kill(self):
self.over=True
if __name__=='__main__':
t=MyThread()
t.start()
print 'wait 5s'
time.sleep(5)
t.kill()
该方法适合run()方法中不包含死循环程序,若run()包含死循环,则此方法无法结束该线程
2.方法二
import threading
import thread
import time
import os
import urllib
def timer():
time_start = time.time()
while(1):
time_end = time.time()
if ((time_end - time_start) > 4):
return 1
def printf():
i = 0
while(1):
i = i + 1
print i
time.sleep(1)
def run():
sub_thread1 = thread.start_new_thread(printf,())
try:
if(timer()):
sub_thread1.exit()
except AttributeError:
pass
print "stop\n"
print "success\n"
if __name__=='__main__':
run()
开一个线程,该线程为死循环,则使用Thread类的exit方法可以退出,一般情况建议使用Thread.threading
若子线程触发了一个新的进程,则此方法无效,需使用父进程杀死该子进程
方法三:
import threading
import thread
import time
import os
import urllib
def timer():
time_start = time.time()
while(1):
time_end = time.time()
if ((time_end - time_start) > 10):
return 1
def printf():
i = 0
while(1):
i = i + 1
print i
time.sleep(1)
#if(i > 15):
# break
def run(filename):
sub_thread = thread.start_new_thread(os.system,('java -jar'+' '+ filename,))
try:
if(timer()):
sub_thread.exit()
except AttributeError:
pass
tasks = os.popen('jps -m').readlines()
#print tasks
found_task = ""
PID_end_position = 0
for task in tasks:
if filename[3:] in task:
found_task = task
PID_end_position = found_task.find(filename[3:]) - 1
break
if found_task:
PID = found_task[0 : PID_end_position]
os.system("taskkill /f /PID " + PID)
time.sleep(3)
os.system('del /f'+' '+filename)
if __name__=='__main__':
run('D:\\ba-finance-tuangou-bp-job-1.0.1-SNAPSHOT.jar')
Python中进程无法结束的处理办法的更多相关文章
- Python中进程
程序 程序:编写完的代码称为程序. 进程 进程:又称重量级进程,正在执行中的程序称为进程.进程的执行会占用内存等资源.多个进程同时执行时,每个进程的执行都需要由操作系统按一定的算法(RR调度.优先数调 ...
- day 27 Python中进程的操作
进程的创建和结束: multiprocess模块: multiprocess不是一个模块而是python中一个操作.管理进程的包 分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享 ...
- python中进程、线程、协程简述
进程 python中使用multiprocessing模块对进程进行操作管理 进程同步(锁.信号量.事件) 锁 —— multiprocessing.Lock 只要用到了锁 锁之间的代码就会变成同步的 ...
- python中进程间通讯——文件锁之fcntl模块的使用
python 中给文件加锁——fcntl模块import fcntl 打开一个文件##当前目录下test文件要先存在,如果不存在会报错.或者以写的方式打开f = open('./test')对该文件加 ...
- python c++ 混合编程中python调用c++string返回类型的函数,python中返回为数字的解决办法
本随笔解决 Python使用ctypes 调用c++dll 字符串返回类型函数,在python中显示为数字:原文解决方案见so: https://stackoverflow.com/questions ...
- Python中进程和线程的总体区别
Num01–>线程 线程是操作系统中能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一个线程指的是进程中一个单一顺序的控制流. 一个进程中可以并发多条线程,每条线程并行 ...
- python中进程池的应用
#原创,转载请联系 假设我们写的一个程序需要运行100个子进程的时候,那么写程序时,不可能循环创建销毁100个进程吧?进程的创建与销毁是很耗系统的资源的. 进程池的作用就体现出来了. 进程池可以控制进 ...
- python中进程池和回调函数
一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...
- python中进程详解
1:pdb调试:基于命令行的调试工具,非常类似gnu和gdb调试,以下是常用的调试命令: 可以python -m pdb xxx.py(你的py文件名)进入命令行调试模式 命令 简写命令 作用 bea ...
随机推荐
- Linux轻量级自动运维工具-Ansible浅析【转】
转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...
- 函数参数 f_arg, *args, **kwargs
当需要给函数传参时,可以通过运用不同的形参来传递,达到参数不同的使用目的. 简单来说:f_arg就是传递的第一个参数,类似于C++中的普通参数: *args 传递的是一个参数的list: **kwar ...
- Python 类的名称空间和组合
一.Python类的名称空间 class Student(object): School = '北京大学' def __init__(self): pass stu1 = Student() stu1 ...
- springBoot单元测试-模拟MVC测试
1)模拟mvc测试,和基础测试是一样的, 都需要在pom文件中引入junit的支持. 略 2)编写测试类 Application1TestMVC 在类头上除啦加入之前的@RunWith(SpringR ...
- CentOS7安装Hadoop2.7完整步骤
总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs.mapreduce等主从关系. 1.环境,3台CentOS7,64位,Hadoo ...
- Windows 和Linux 误删除后的恢复
ext文件系统上删除文件,可以恢复:extundelete; windows 恢复删除文件: final data v2.0汉化版 和 easyrecovery
- C# String.Format用法和格式说明
1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...
- Linux命令参数处理 shell脚本函数getopts
getopts 命令 用途 处理命令行参数,并校验有效选项. 语法 getopts 选项字符串 名称 [ 参数 ...] 描述 getopts 的设计目标是在循环中运行,每次执行循环,getopts ...
- 冒泡法的算法最佳情况下的时间复杂度为什么是O(n)
我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下. 但我一直不明白这是怎么算出来的,因此通过阅读<算法导论-第2版>的2.2节,使用对插入排序最佳时间复 ...
- GUC-2 原子性
import java.util.concurrent.atomic.AtomicInteger; /* * 一.i++ 的原子性问题:i++ 的操作实际上分为三个步骤“读-改-写” * int i ...