#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading, time
#新线程执行的代码:
def loop():
print('thread %s is running...' % threading.current_thread().name)
n = 0
while n < 5:
n = n + 1
print('thread %s ' % threading.current_thread().name)
time.sleep(3)
print('thread %s ended.' % threading.current_thread().name)
print('thread %s is running...' % threading.current_thread().name)
t = threading.Thread(target=loop, name='LoopThread')
t.start()
#t.join()
print('thread %s ended.' % threading.current_thread().name)
执行结果:
thread MainThread is running...
thread LoopThread is running...thread MainThread ended.
thread LoopThread
thread LoopThread
thread LoopThread
thread LoopThread
thread LoopThread
thread LoopThread ended.
会在主线程中创建子线程,主线程和子线程并行运行
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Queue
import time
import threading
import random
def go(name):
# time.sleep(1)
print("go" + str(name))
time.sleep(1)
for j in range(20):
t1 = threading.Thread(group=None, target=go, name=None, args=(j,))
t1.start()
for i in range(20):
go(i)
j是并行执行,主线程和20个子线并行执行
i是串行执行,只有主线程
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Queue
import time
import threading
import random
q = Queue.Queue()
def pro(name):
print("---pro data kaiqi")
#time.sleep(3)
for i in range(20):
time.sleep(1)
print(name + "pro data" + str(i))
q.put(i)
def con(name):
print("-----con data kaiqi")
n = 0
while n < 20:
time.sleep(3)
data = q.get()
print(name + "con data----" + str(data))
n += 1
t1 = threading.Thread(group=None, target=pro, name=None, kwargs={'name':'laoban'})
t2 = threading.Thread(group=None, target=con, name=None, kwargs={'name':'yuangong'})
t1.start()
t2.start()
两个线程并行交互,在一个队列中拿数据