您的位置:首页 > 编程语言 > Python开发

Python中的threading

2016-04-01 16:44 597 查看
#!/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()

两个线程并行交互,在一个队列中拿数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  threading