#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
多线程实例
'''
import
threading
def
worker(n):
print
(
'start worker{0}'
.format(n))
class
MyThread(threading.Thread):
def
__init__
(
self
,args):
super
(MyThread,
self
).
__init__
()
self
.args =args
def
run(
self
):
print
(
'start MyThread{0}'
.format(
self
.args))
if
__name__ ==
"__main__"
:
for
i
in
xrange
(
1
,
6
):
t1 = threading.Thread(
target
=worker,
args
=(i,))
t1.start()
t1.join()
for
x
in
xrange
(
6
,
11
):
t2 = MyThread(x)
t2.start()
t2.join()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
多线程锁
'''
import
time
import
threading
def
worker(name,lock):
with
lock:
print
(
'####start {}####'
.format(name))
time.sleep(
2
)
print
(
'####end {}####'
.format(name))
##
也可用
lock.
。。。的两种方法和进程一样的
if
__name__ ==
"__main__"
:
lock = threading.Lock()
t1 = threading.Thread(
target
=worker,
args
=(
'worker1'
,lock))
t2 = threading.Thread(
target
=worker,
args
=(
'worker2'
,lock))
t1.start()
t2.start()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
多线程共享变量
'''
import
threading
def
worker(l):
l.append(
"yi"
)
l.append(
"er"
)
l.append(
"san"
)
if
__name__ ==
"__main__"
:
l =
list
()
l +=
range
(
1
,
10
)
print
(l)
t = threading.Thread(
target
=worker,
args
=(l,))
t.start()
print
(l)