python是假的多线程(只是轮流进行而已),
它不适于cpu计算密集型的操作(这样反而会变慢),
但适用于 I/O密集型的操作,(网络请求,文件读取)----很适用于网络爬取.
import threading
#多线程的实现方法:
#实现方法1:
def function():
for i in range(10):
print(i)
t1=threading.Thread(target=function)
t2=threading.Thread(target=function)
t1.start()
t2.start()
#实现方法2:类似java
class MyThread(threading.Thread):
def run(self):
for i in range(10):
print(i,threading.current_thread())
MyThread().start()
#线程数量
num=threading.enumerate()
print("啊",num,"啊")
#显示当前线程:
print(threading.current_thread())
print("--------------------------------------------------------")
#全局变量:
#多线程在一个进程里面,所以进程中的全局变量在进程种都可以使用
Value=0
def add():
global Value
for x in range(100):
Value += 1
print(Value)
for i in range(2):
t=threading.Thread(target=add)
t.start()
#锁机制:
#把所有涉及到对公共资源修改的操作都加上锁
lock=threading.Lock()
def add():
global Value
lock.acquire()
for x in range(100):
Value += 1
print(Value)
lock.release()