Example #1
0
def main():
    file = open("file.txt")
    q = Queue()
    t = Thread(target=enq, args=(file,q))
    t.isDaemon()
    t.start()
    doSomethingWithData()
Example #2
0
class threadedConnection(baseConnection):
  def setup(self,config,name="ThreadedConnection"):
    super(threadedConnection,self).setup(config,name)
    self.thread = Thread(target=self.run,name=name)
    self.keep_running = True

  def join(self,*args,**kwargs):
    self.thread.join(*args,**kwargs)

  def run(self):
    raise NotImplementedError()

  def start(self):
    self.thread.start()
    return True

  def wake(self):
    return True

  def stop(self,wait=True): # API, runs outside of thread
    self.keep_running = False
    self.wake()
    if wait and not self.thread.isDaemon() and currentThread() != self.thread:
      self.join()
    return True
Example #3
0
File: Util.py Project: ido/cobalt
class PickleAwareThread (object):
    __metaclass__ = ClassInfoMetaclass

    def __init__(self, group = None, target = None, name = None, args = (), kwargs = {}):
        self.__thread = Thread(group = group, target = self.__run_thread, name = name, args = args, kwargs = kwargs)
        self.__group = group
        self.__target = target
        self.__name = self.__thread.getName()
        self.__args = args
        self.__kwargs = kwargs
        self.__is_daemon = self.__thread.isDaemon()
        self.__started = False
        self.__stopped = False

    def __pickle_data(self, data):
        del data[getattrname(self.__clsname, "__thread")]

    def __unpickle_data(self, data):
        if not self.__started:
            self.__thread = Thread(group = self.__group, target = self.__run_thread, name = self.__name, args = self.__args,
                kwargs = self.__kwargs)
        else:
            self.__thread = None

    def __getstate__(self):
        return pickle_data(self)

    def __setstate__(self, data):
        unpickle_data(self, data)

    def start(self):
        if self.__thread:
            self.__started = True
            self.__thread.start()
        else:
            assert False, "thread already started"

    def __run_thread(self):
        self.__started = True
        try:
            self.run()
        finally:
            self.__stopped = True

    def run(self):
        if self.__target:
            self.__target(*self.__args, **self.__kwargs)

    def join(self, timeout = None):
        if self.__thread:
            self.__thread.join(timeout)
        elif not self.__stopped:
            raise ThreadPickledAliveException

    def getName(self):
        return self.__name

    def setName(self, name):
        self.__name = name
        if self.__thread:
            self.__thread.setName(name)

    def isAlive(self):
        if self.__thread:
            return self.__thread.isAlive()
        elif self.__stopped:
            return False
        else:
            raise ThreadPickledAliveException

    def isDaemon(self):
        return self.__is_daemon

    def setDaemon(self, daemonic):
        assert not self.__started, "cannot set daemon status of active thread"
        self.__thread.setDaemon(daemonic)
        self.is_daemon = daemonic
Example #4
0
#!/usr/bin/env python
# _*_coding:utf-8_*_

from threading import Thread
import time


def foo(arg, v):
    for item in range(100):
        print item
        time.sleep(1)
print 'before'
t1 = Thread(target=foo, args=('test1', 10))
t1.setDaemon(daemonic=True)
t1.start()
t1.join(5)
print '\n---'
print t1.getName()
print t1.isDaemon()
print 'after'
#time.sleep(10)   #当主线程退出后,子线程也随着销毁
Example #5
0
# daemon屬性
from threading import Thread
from time import sleep


def fun():
    sleep(3)
    print("daemon 測試")


t = Thread(target=fun)

t.setDaemon(True)
print(t.isDaemon())

t.start()

print("========================")
# daemon属性

import time
from threading import Thread, currentThread


def fun(sec):
    print("线程属性测试")
    time.sleep(sec)
    print("线程结束")


th = Thread(name="th_1", target=fun, args=(3, ))

print("Daemon:", th.isDaemon())
th.daemon = True
print("Daemon:", th.isDaemon())

th.start()

print("thread name:", th.name)
print("alive:", th.is_alive())
print(currentThread().getName())
th.join(4)

print("========主线程结束=========")
Example #7
0
from threading import Thread
import time


def fun(arg, sleep_time):
    time.sleep(sleep_time)
    print(arg)


# 实例化一个线程
t1 = Thread(target=fun, args=('Thread 1', 1))
t2 = Thread(target=fun, args=('Thread 2', 0))

# 修改,查看线程名
t1.setName('th001')
print('thread name: ', t1.getName())

# 查看,并设置 t1 为守护线程 --> 当主线程结束后, 一起结束
print(t1.isDaemon())
t1.setDaemon(True)
print(t1.isDaemon())

# 启动线程
t1.start()
t2.start()

print('finally')
Example #8
0
class PickleAwareThread(object):
    __metaclass__ = ClassInfoMetaclass

    def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
        self.__thread = Thread(group=group,
                               target=self.__run_thread,
                               name=name,
                               args=args,
                               kwargs=kwargs)
        self.__group = group
        self.__target = target
        self.__name = self.__thread.getName()
        self.__args = args
        self.__kwargs = kwargs
        self.__is_daemon = self.__thread.isDaemon()
        self.__started = False
        self.__stopped = False

    def __pickle_data(self, data):
        del data[getattrname(self.__clsname, "__thread")]

    def __unpickle_data(self, data):
        if not self.__started:
            self.__thread = Thread(group=self.__group,
                                   target=self.__run_thread,
                                   name=self.__name,
                                   args=self.__args,
                                   kwargs=self.__kwargs)
        else:
            self.__thread = None

    def __getstate__(self):
        return pickle_data(self)

    def __setstate__(self, data):
        unpickle_data(self, data)

    def start(self):
        if self.__thread:
            self.__started = True
            self.__thread.start()
        else:
            assert False, "thread already started"

    def __run_thread(self):
        self.__started = True
        try:
            self.run()
        finally:
            self.__stopped = True

    def run(self):
        if self.__target:
            self.__target(*self.__args, **self.__kwargs)

    def join(self, timeout=None):
        if self.__thread:
            self.__thread.join(timeout)
        elif not self.__stopped:
            raise ThreadPickledAliveException

    def getName(self):
        return self.__name

    def setName(self, name):
        self.__name = name
        if self.__thread:
            self.__thread.setName(name)

    def isAlive(self):
        if self.__thread:
            return self.__thread.isAlive()
        elif self.__stopped:
            return False
        else:
            raise ThreadPickledAliveException

    def isDaemon(self):
        return self.__is_daemon

    def setDaemon(self, daemonic):
        assert not self.__started, "cannot set daemon status of active thread"
        self.__thread.setDaemon(daemonic)
        self.is_daemon = daemonic
Example #9
0
def main(ARGS):
    # Init variables
    latest_mask_img = None
    cap_file = None
    input_q = queue.Queue(maxsize=1)
    output_q = queue.Queue(maxsize=1)
    estimator = BodyPixEstimator(ARGS.model, ARGS.stride, ARGS.shrink_factor)

    # Open the capture device
    cap = cv2.VideoCapture(ARGS.cap_source)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, ARGS.cap_res[0])
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, ARGS.cap_res[1])

    if not cap.isOpened():
        logger.error("Could not open the specified device.")
        return

    # Load the background image/video
    if ARGS.bg_video:
        cap_file = cv2.VideoCapture(ARGS.bg_video)
    elif ARGS.bg_url:
        v_pafy = pafy.new(ARGS.bg_url)
        play = v_pafy.getbestvideo()
        cap_file = cv2.VideoCapture(play.url)

    bg_img = cv2.imread(ARGS.bg_image)
    bg_img = cv2.resize(bg_img, dsize=ARGS.cap_res)

    # Start the prediction thread
    is_running = Event()
    is_running.set()

    th = Thread(name="mask_image_generator", target=mask_image_generator,
                args=(is_running, estimator, input_q, output_q,))
    th.isDaemon = True
    th.start()

    while True:
        ret, frame = cap.read()
        if not ret:
            logger.warn("cap.read() failed.")
            continue

        # Flip the image if requested
        if ARGS.flip != -1:
            frame = cv2.flip(frame, ARGS.flip)

        # Pass the image to the generator thread
        im_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        if input_q.full():
            input_q.get()
        input_q.put(im_rgb, block=False)

        # Get the mask image if possible
        if output_q.qsize() > 0:
            latest_mask_img = output_q.get_nowait()

        # Load a frame from the background video file
        if cap_file:
            ret, bg_img = cap_file.read()
            if not ret:
                cap_file.set(cv2.CAP_PROP_POS_FRAMES, 0)
                ret, bg_img = cap_file.read()

            bg_img = cv2.resize(bg_img, dsize=ARGS.cap_res)

        if latest_mask_img is not None:
            # Composite the foreground and background images
            mask = latest_mask_img
            composed = np.zeros(frame.shape, dtype=frame.dtype)
            for i in range(3):
                composed[:,:,i] = bg_img[:,:,i] * (1-mask[:,:,i]/255) + frame[:,:,i] * (mask[:,:,i]/255)

            # Output the frame
            if ARGS.show_only_gui:
                cv2.imshow("frame", composed)
            else:
                sys.stdout.buffer.write(composed.tobytes())
        else:
            if ARGS.show_only_gui:
                cv2.imshow("frame", bg_img)
            else:
                sys.stdout.buffer.write(bg_img.tobytes())

        if cv2.waitKey(1) != -1:
            break

    is_running.clear()
    th.join()
    cap.release()
    cv2.destroyAllWindows()
Created on 2016年4月25日

@author: zhongqiang

Describe: 多线程的实现方式和相关的方法
'''

from threading import Thread
from time import sleep, ctime, sleep


def myfunction(arg):
    for item in range(10):
        print item
        sleep(1)


print "before"
t1 = Thread(target=myfunction, args=('hello',))
print t1.getName()  # Thread-1
print t1.isDaemon()  # 默认为false
# t1.setDaemon(True)  #设置为setDaemon模式

t1.start()
t1.join(timeout=5)

print "after"
print "Over"

sleep(5)
Example #11
0
"""线程属性演示"""
from threading import Thread
from time import sleep


def fun():
    sleep(3)
    print("线程属性测试")


t = Thread(target=fun)
#主线程退出分支线程也退出
t.setDaemon(True)
t.start()
t.setName("zhangqiang")
print("Name:", t.getName())
print("Alive", t.is_alive())
print('Daemon:', t.isDaemon())
t.join()
Example #12
0
        json.dump(gpsData, f)

def runC():
    sdr.sample_rate = 2.4e6
    sdr.center_freq = 900e6
    sdr.gain = 40
    global run
        samples = sdr.read_samples(256*4096)
        spectrum[time.time()] = str(samples)
    with open('spectrumData', 'w') as g:
        json.dump(spectrum, g)

if __name__ == "__main__":
    t1 = Thread(target = runA)
    t2 = Thread(target = runB)
    t3 = Thread(target = runC)

    t1.isDaemon()
    t2.isDaemon()
    t3.isDaemon()

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()


Example #13
0
        # item = make_an_item_available(i)
        item = i
        queue.put(str(item))

    # queue.put(str("exit"))


def consumer(queue):
    while True:
        item = queue.get()
        if item == "exit":
            break
        # print("Received item in queue fro thread" + item)
        queue.task_done()


queue = Queue()
t1 = Thread(target=producer, args=(queue, ))
t2 = Thread(target=consumer, args=(queue, ))
t1.daemon = True
t2.daemon = True
t1.start()
t2.start()
import time
t1.join()
while True:
    print(t1.isAlive(), t1.isDaemon())
    print(t2.isAlive(), t2.isDaemon(), t2.getName())
    # t2.daemon =False
    time.sleep(2)
Example #14
0
# -*- coding: utf-8 -*-

from threading import Thread
import os
import time


def sleeper(name, seconds):
    print 'starting child process with id: ', os.getpid()
    print 'parent process:', os.getppid()
    print 'sleeping for %s ' % seconds
    time.sleep(seconds)
    print "%s done sleeping" % name


if __name__ == '__main__':
    print "in parent process (id %s)" % os.getpid()
    p = Thread(target=sleeper, args=('bob', 5))
    print 'daemon?', p.isDaemon()
    p.setDaemon(not p.isDaemon())
    print 'daemon?', p.isDaemon()
    p.start()
    print "in parent process after child process start"
    print "parent process about to join child process"
    p.join()
    print "in parent process after child process join"
    print "parent process exiting with id ", os.getpid()
    print "The parent's parent process:", os.getppid()
    print " Global Location: %s" % vehicle.location.global_frame

    vehicle.simple_goto(LocationGlobalRelative(myLat,myLon,alt))
    time.sleep(3)
    print " Global Location: %s" % vehicle.location.global_frame

    vehicle.close()
    run = False
    print("done")

def runB():
    global run
    while run:
        #gpsData[time.time()] = str(vehicle.location.global_frame)
        gpsData[datetime.datetime.fromtimestamp(int(time.time())).strftime('%Y-%m-%d %H:%M:%S')] = str(vehicle.location.global_frame)
        time.sleep(.1)
    with open('gpsTimestamps', 'w') as f:
        json.dump(gpsData, f)

if __name__ == "__main__":
    t1 = Thread(target = runA)
    t2 = Thread(target = runB)
    t1.isDaemon()
    t2.isDaemon()
    t1.start()
    t2.start()
    t1.join()
    t2.join()


Example #16
0
from threading import Thread, currentThread
from time import sleep


def fun():
    print("当前线程:", currentThread().getName())
    sleep(3)
    print("线程属性示例")


#创建线程对象
t = Thread(target=fun, name="Tedu")
#设置daemon
t.setDaemon(True)
print("Daemon:", t.isDaemon())

t.start()

#线程名称
t.setName('tarena')
print("name:", t.getName())

print("线程状态:", t.isAlive())
print("线程状态:", t.is_alive())
# t.join()
Example #17
0
"""
import os, sys
import time
from threading import  Thread

def Foo(arg,arg2):
    for i in range(30):
        print i
        time.sleep(1)

print 'before'
t1 = Thread(target=Foo,args=(1,2,))
t1.setDaemon(True)
t1.start()
t1.join(5)  #主线程到达join,直到子线程结束才继续主线程。默认不超时,如果超过5s,超时后主线程不等待
print t1.getName()
#t1.setName('testthread')
print t1.isDaemon()  #False 等待子线程完成才结束主线程。True 主线程结束就退出,不等待子线程.是否守护
print t1.isAlive()

print 'after'
print 'after'
print 'after'
print 'after end'
time.sleep(10)





Example #18
0
"""
thread_attr.py
线程属性演示
"""

from threading import Thread
from time import sleep

def fun():
    sleep(3)
    print("进程属性设置")

t = Thread(target=fun,name="AID")

t.setDaemon(True) # 主线程退出分支线程也退出

t.start()

t.setName('Tarena')
print("Name:",t.getName())
print("is alive:",t.is_alive())
print("is daemon:",t.isDaemon())