#下面是一个示例,我写了一个简单的for循环,并加入了多线程并发。
# -*- coding:utf-8 -*-
import thread,threading
#Test Function
def ForTest():
for i in range(10):
print i
class mythread(threading.Thread):
def __init__(self,threadname):
threading.Thread.__init__(self)
def run(self):
lock.acquire()
for j in xrange(int(times)):
#Add Own Fuction Here
ForTest()
lock.release()
def MutiThread(num,times):
threads=[]
global ft
for x in xrange(num):
threads.append(mythread(num))
for t in threads:
lock.acquire()
t.start()
lock.release()
for t in threads:
t.join()
if __name__ == '__main__':
global num,times,lock
num=2 #num 并发数
times=2 #times 运行次数
lock=threading.Lock()
MutiThread(num,times)
运行结果:
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
from multiprocessing import Process
#用这个list 保存进程
p_list = list()
# 先一起定义好,放到一个list里面
for i in range(100):
-----p1 = Process(target=目标函数, name='名字')
-----p_list .append(p1)
# 批量启动
for p in p_list:
-----p.daemon = True
-----p.start()
----- 这个是用来代替缩进的,方便观看代码,使用的时候记得删除。
什么意思呢?如果你是在要在循环体内创建多进程,每循环一次便增加一个进程,那么只需要把创建多进程的代码写入循环体内就好了,完全与在循环体外无任何区别。
如果你想要让整个循环创建的所有进程在执行时间上大致同步,那么我建议你先按循环长度创建好进程和管道或者队列,推荐队列,然后循环时将变量推送给不同的进程处理就行了。
简单的如下
from multiprocessing import Process
def ps(i):
print(str(i))
def run():
for i in range(5):
Process(target=ps, args=(i, )).start()
if __name__ == "__main__":
run()
实现rannable接口的run方法