Python
CPUCPU
- --
Python
Python
threadstart_new_thread():
thread.start_new_thread ( function, args[, kwargs] )
:
- function -
- args - ,tuple
- kwargs -
(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import thread
import time
#
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) )
#
try:
thread.start_new_thread( print_time, ("Thread-1", 2, ) )
thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print "Error: unable to start thread"
while 1:
pass
Thread-1: Thu Jan 22 15:42:17 2009 Thread-1: Thu Jan 22 15:42:19 2009 Thread-2: Thu Jan 22 15:42:19 2009 Thread-1: Thu Jan 22 15:42:21 2009 Thread-2: Thu Jan 22 15:42:23 2009 Thread-1: Thu Jan 22 15:42:23 2009 Thread-1: Thu Jan 22 15:42:25 2009 Thread-2: Thu Jan 22 15:42:27 2009 Thread-2: Thu Jan 22 15:42:31 2009 Thread-2: Thu Jan 22 15:42:35 2009
thread.exit()SystemExit exception
Pythonthreadthreadingthread
threading
- threading.currentThread():
- threading.enumerate(): list
- threading.activeCount(): len(threading.enumerate())
ThreadThread:
- run():
- start():
- join([time]): join() --
- isAlive():
- getName():
- setName():
Threading
Threadingthreading.Thread__init__run
(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import threading
import time
exitFlag = 0
class myThread (threading.Thread): #threading.Thread
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self): #run run
print "Starting " + self.name
print_time(self.name, self.counter, 5)
print "Exiting " + self.name
def print_time(threadName, delay, counter):
while counter:
if exitFlag:
(threading.Thread).exit()
time.sleep(delay)
print "%s: %s" % (threadName, time.ctime(time.time()))
counter -= 1
#
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
#
thread1.start()
thread2.start()
print "Exiting Main Thread"
Starting Thread-1 Starting Thread-2 Exiting Main Thread Thread-1: Thu Mar 21 09:10:03 2013 Thread-1: Thu Mar 21 09:10:04 2013 Thread-2: Thu Mar 21 09:10:04 2013 Thread-1: Thu Mar 21 09:10:05 2013 Thread-1: Thu Mar 21 09:10:06 2013 Thread-2: Thu Mar 21 09:10:06 2013 Thread-1: Thu Mar 21 09:10:07 2013 Exiting Thread-1 Thread-2: Thu Mar 21 09:10:08 2013 Thread-2: Thu Mar 21 09:10:10 2013 Thread-2: Thu Mar 21 09:10:12 2013 Exiting Thread-2
ThreadLockRlockacquirereleaseacquirerelease
0"set"1"print"
"set""print"01
"set""print""set""print""set"
0101
(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import threading
import time
class myThread (threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self):
print "Starting " + self.name
# True
# timeout
# False
threadLock.acquire()
print_time(self.name, self.counter, 3)
#
threadLock.release()
def print_time(threadName, delay, counter):
while counter:
time.sleep(delay)
print "%s: %s" % (threadName, time.ctime(time.time()))
counter -= 1
threadLock = threading.Lock()
threads = []
#
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
#
thread1.start()
thread2.start()
#
threads.append(thread1)
threads.append(thread2)
#
for t in threads:
t.join()
print "Exiting Main Thread"
Queue
PythonQueueFIFO)QueueLIFOLifoQueuePriorityQueue
Queue:
- Queue.qsize()
- Queue.empty() True,False
- Queue.full() True,False
- Queue.full maxsize
- Queue.get([block[, timeout]])timeout
- Queue.get_nowait() Queue.get(False)
- Queue.put(item, block=True, timeout=None) timeout
- Queue.put_nowait(item) Queue.put(item, False)
- Queue.task_done() Queue.task_done()
- Queue.join()
(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import Queue
import threading
import time
exitFlag = 0
class myThread (threading.Thread):
def __init__(self, threadID, name, q):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.q = q
def run(self):
print "Starting " + self.name
process_data(self.name, self.q)
print "Exiting " + self.name
def process_data(threadName, q):
while not exitFlag:
queueLock.acquire()
if not workQueue.empty():
data = q.get()
queueLock.release()
print "%s processing %s" % (threadName, data)
else:
queueLock.release()
time.sleep(1)
threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five"]
queueLock = threading.Lock()
workQueue = Queue.Queue(10)
threads = []
threadID = 1
#
for tName in threadList:
thread = myThread(threadID, tName, workQueue)
thread.start()
threads.append(thread)
threadID += 1
#
queueLock.acquire()
for word in nameList:
workQueue.put(word)
queueLock.release()
#
while not workQueue.empty():
pass
#
exitFlag = 1
#
for t in threads:
t.join()
print "Exiting Main Thread"
Starting Thread-1 Starting Thread-2 Starting Thread-3 Thread-1 processing One Thread-2 processing Two Thread-3 processing Three Thread-1 processing Four Thread-2 processing Five Exiting Thread-3 Exiting Thread-1 Exiting Thread-2 Exiting Main Thread
zhoushixiong
men***[email protected]
Python
# -*-* encoding:UTF-8 -*- # author : shoushixiong # date : 2018/11/22 import threading import time list = [0,0,0,0,0,0,0,0,0,0,0,0] class myThread(threading.Thread): def __init__(self,threadId,name,counter): threading.Thread.__init__(self) self.threadId = threadId self.name = name self.counter = counter def run(self): print ":",self.name # True # timeout # False threadLock.acquire() print_time(self.name,self.counter,list.__len__()) # threadLock.release() def __del__(self): print self.name,"" def print_time(threadName,delay,counter): while counter: time.sleep(delay) list[counter-1] += 1 print "[%s] %s %d :%d" % (time.ctime(time.time()),threadName,counter,list[counter-1]) counter -= 1 threadLock = threading.Lock() threads = [] # thread1 = myThread(1,"Thread-1",1) thread2 = myThread(2,"Thread-2",2) # thread1.start() thread2.start() # threads.append(thread1) threads.append(thread2) # for t in threads: t.join() print ""zhoushixiong
men***[email protected]
qwx
807***[email protected]
#!/usr/bin/python # -*- coding: UTF-8 -*- import threading import time class MyThread(threading .Thread ): def __init__(self,delay,name,count): threading .Thread .__init__(self) self .delay=delay self.name=name self.count=count def run (self): print('starting'+ self.name ) threadLock.acquire() # True # timeout # False print_time(self.delay ,self.name ,self.count) # threadLock.release() def print_time(delay,name,count): while count : time.sleep(delay ) print("{}:{}".format(name, time.ctime(time.time()))) count -= 1 threadLock=threading.Lock() # threads=[] # thread1=MyThread(1,'thread-1',3) thread2=MyThread(2,'thread-2',3) # thread1.start() thread2 .start() # threads .append(thread1 ) threads .append(thread2 ) # for t in threads : t.join() print('Exiting Main Thrid'):
qwx
807***[email protected]