杀线程代码

import websocket
import threading
import inspect
import ctypes
import time
from websocket import ABNF

symbol = 'btc'

thread = {'id': 0, 'on': 0}


def stop(tid):
    tid = ctypes.c_long(tid)
    if not inspect.isclass(SystemExit):
        exctype = type(SystemExit)
    res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(SystemExit))
    if res == 0:
        raise ValueError("invalid thread id")
    elif res != 1:
        # """if it returns a number greater than one, you're in trouble,
        # and you should call it again with exc=NULL to revert the effect"""
        ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
        raise SystemError("PyThreadState_SetAsyncExc failed")

def test():
    i = 0
    while i<= 100:
        time.sleep(0.5)
        i+=1
        print('\nthe value of i from thread is:',i)
        if i == 20:
            thread['on'] = 0
            stop(thread['id'])
    


def on_message(ws, message):

    if thread['id'] == 0:
        thread['on'] = 1
        t = threading.Thread(target=test)
        t.start()
        thread['id'] = t.ident

    if thread['on'] == 0:

        print('\nt------------------------- the on is ----------------------', thread['on'])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的安卓服务Handler线程代码: ```java public class MyService extends Service { private Looper mServiceLooper; private ServiceHandler mServiceHandler; // Handler that receives messages from the thread private final class ServiceHandler extends Handler { public ServiceHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { // Do some work here // ... // Stop the service using the stopSelf() method. // This will also stop the thread. stopSelf(msg.arg1); } } @Override public void onCreate() { // Start up the thread running the service. Note that we create a // separate thread because the service normally runs in the process's // main thread, which we don't want to block. HandlerThread thread = new HandlerThread("ServiceStartArguments", Process.THREAD_PRIORITY_BACKGROUND); thread.start(); // Get the HandlerThread's Looper and use it for our Handler mServiceLooper = thread.getLooper(); mServiceHandler = new ServiceHandler(mServiceLooper); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show(); // For each start request, send a message to start a job and deliver the // start ID so we know which request we're stopping when we finish the job Message msg = mServiceHandler.obtainMessage(); msg.arg1 = startId; mServiceHandler.sendMessage(msg); // If we get killed, after returning from here, restart return START_STICKY; } @Override public IBinder onBind(Intent intent) { // We don't provide binding, so return null return null; } @Override public void onDestroy() { Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); } } ``` 该代码创建了一个HandlerThread并使用它的Looper为ServiceHandler创建了一个Handler。ServiceHandler实现了handleMessage()方法,在该方法中执行服务的工作,然后调用stopSelf()方法停止服务。在onStartCommand()方法中,使用Handler发送一个消息来启动服务的工作。如果服务被死,则返回START_STICKY以便在可用时重新启动服务。最后,在onDestroy()方法中,显示一个Toast以表明服务已完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值