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 ...
随机推荐
- 谁说运维用ELK没用?我就说很有用,只是你之前不会用【转】
1.安装JDK 1)登陆ORACLE官网 (http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html ...
- kvm安装准备
到实际情况下,做虚拟化是直接做在真机上. 但实验时,可以在虚拟机上进行.(因为做实验的时候没办法连接到桥接模式的网络,所以使用了NAT方式来连接网络) 在vmware安装centos 64bit fo ...
- Delphi 中的自动释放策略
来自万一老师的博客:http://www.cnblogs.com/del/archive/2011/12/21/2295794.html ------------------------------- ...
- C语言 五子棋2
#include<windows.h> #include<stdlib.h> #include<stdio.h> #include<conio.h> # ...
- GO基本数据结构练习:数组,切片,映射
按<GO IN ACTION>的书上进行. 应该是第二次了哦~~ package main import ( "fmt" ) func main() { array : ...
- 字符串处理strcpy strcat函数的用法
C语言函数字符串处理strcpy strcat函数的用法: 1)strcat是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串 ...
- lr11 controller打开提示cannot initialize driver dll,exiting
解决:在win7要以管理员身份运行才行的 问题2:在使用loadrunner时,从vuser generator启动controller的时候可能出现:由于另一个程序正在运行中 此操作无法完成.请选择 ...
- POJ 3752 字母旋转游戏
问题描述: 给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充.例如,当M=5,N ...
- 【C#】利用反射构建实体
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并
Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目. 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间 ...