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中进程无法结束的处理办法的更多相关文章

  1. Python中进程

    程序 程序:编写完的代码称为程序. 进程 进程:又称重量级进程,正在执行中的程序称为进程.进程的执行会占用内存等资源.多个进程同时执行时,每个进程的执行都需要由操作系统按一定的算法(RR调度.优先数调 ...

  2. day 27 Python中进程的操作

    进程的创建和结束: multiprocess模块: multiprocess不是一个模块而是python中一个操作.管理进程的包 分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享 ...

  3. python中进程、线程、协程简述

    进程 python中使用multiprocessing模块对进程进行操作管理 进程同步(锁.信号量.事件) 锁 —— multiprocessing.Lock 只要用到了锁 锁之间的代码就会变成同步的 ...

  4. python中进程间通讯——文件锁之fcntl模块的使用

    python 中给文件加锁——fcntl模块import fcntl 打开一个文件##当前目录下test文件要先存在,如果不存在会报错.或者以写的方式打开f = open('./test')对该文件加 ...

  5. python c++ 混合编程中python调用c++string返回类型的函数,python中返回为数字的解决办法

    本随笔解决 Python使用ctypes 调用c++dll 字符串返回类型函数,在python中显示为数字:原文解决方案见so: https://stackoverflow.com/questions ...

  6. Python中进程和线程的总体区别

    Num01–>线程 线程是操作系统中能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. 一个线程指的是进程中一个单一顺序的控制流. 一个进程中可以并发多条线程,每条线程并行 ...

  7. python中进程池的应用

    #原创,转载请联系 假设我们写的一个程序需要运行100个子进程的时候,那么写程序时,不可能循环创建销毁100个进程吧?进程的创建与销毁是很耗系统的资源的. 进程池的作用就体现出来了. 进程池可以控制进 ...

  8. python中进程池和回调函数

    一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...

  9. python中进程详解

    1:pdb调试:基于命令行的调试工具,非常类似gnu和gdb调试,以下是常用的调试命令: 可以python -m pdb xxx.py(你的py文件名)进入命令行调试模式 命令 简写命令 作用 bea ...

随机推荐

  1. adb_usb.ini在adb找不到设备时

    不能连接不上adb,如下方法解决,步骤描述不愿意看的话,直接使用本文最下面的批处理命令,方法copy粘贴到新建的bat文件里运行,或者直接粘贴到dos窗口运行. 1. 使用androidsdk目录中的 ...

  2. oracle造成系统CPU过高的检查sql

    1. 根据占用CPU高的进程号来查询这个进程执行的SQL语句: CPU过高的进程号: #首先找到CPU过高的进程号 # top -bn1 是静态找到占用最高的进程 [root@localhost ~] ...

  3. asp基础

    0.1在浏览器中通过查看源代码的方式是无法看到 ASP 源代码的,你只能看到由 ASP 文件输出的结果,而那些只是纯粹的 HTML 而已.这是因为,在结果被送回浏览器前,脚本已经在服务器上执行了. 0 ...

  4. hdu 4678

    HDU 4768: Flyer 题意: 有N个社团,每个社团三个属性A,B,C,表示会向编号A+k*C的同学发传单(k=0,1,2...  && A+k*C <= B).题目保证 ...

  5. python爬取漫画

    抓取漫画的网址是:sf互动传媒 抓取漫画的由来也是看了知乎上有人说用爬取漫画,然后自己也玩玩 首页中每个漫画的url是类似这样存储的: <tr> <td height="3 ...

  6. Nginx 502错误:upstream sent too big header while reading response header from upstream

    原因: 在使用Shiro的rememberMe功能时,服务器返回response的header部分过大导致. 解决方法: https://stackoverflow.com/questions/238 ...

  7. 【转】EventBus 3.0使用详解

    原文:https://www.jianshu.com/p/f9ae5691e1bb 01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件.组件与后台线程间进行通信,比如在子线程中进行请求数 ...

  8. 实验 Unity Linear Color Space 发现结果不符合预期

    美术前上个礼拜找我问光照图总是烘焙过暗的问题,一时兴起我在 Gamma 和 Linear 两个颜色空间切换了下,发现一个 Shader 明暗不同,另一个 毫无变化,于是激发了我去研究下在 Unity ...

  9. Xcode 7.0正式版发布了

    Xcode 7.0正式版发布了     下载地址:链接: http://pan.baidu.com/s/1FNkPS 密码: ee42     本文由大学霸整理,转载请注明出处,尊重IT人!

  10. 深入理解javascript作用域系列第三篇

    前面的话 一般认为,javascript代码在执行时是由上到下一行一行执行的.但实际上这并不完全正确,主要是因为声明提升的存在.本文是深入理解javascript作用域系列第三篇——声明提升(hois ...