赞
踩
多线程用一个CPU跑多个线程;
多进程用多个CPU跑,每个CPU跑一个线程。
计算密集用多进程,IO密集用多线程。
from multiprocessing import Pool #多进程
arr1 = [1,3123,521,123,12321,77,116]
def test_func(i):
#测试使用的函数
while True:
i=i*i
pool = Pool(5)# 开5个进程,没有参数时默认是 cpu 的核心数
results = pool.map(test_func, arr1)# 在进程中执行 test_func
pool.close() #需要关闭进程池,防止池其他任务的提交,注意!这里不是关闭进程。简单来说就是关掉了屋外的大门,但是各个房间在运行。
pool.join() #等待进程池里面的进程运行完
使用时遇见的小问题:在win10电脑jupyter开不了多进程(求解),直接运行py文件就可以;在linux上jupyter可以多进程。
from threading import Thread #多线程 arr1 = [1,3123,521,123,12321,77,116] def test_func(i): #测试使用的函数 print(i) ts = [] for i in range(15): # target指定线程要执行的代码,args指定该代码的参数 th = threading.Thread(target=test_func, args=(i,)) ts.append(th) #开炮 for i in ts: i.start() # 此处的join函数使子线程全部跑完再继续往下跑子线程 for i in ts: i.join() print("it is end !")
1.在apply前加swifter
import swifter
df.swifter.apply(XXXXX)
2.pandarallel
from pandarallel import pandarallel
pandarallel.initialize(nb_workers=20)#nb_workers=进程数
df.parallel_apply(xxxxx)
修改前:
from collections import defaultdict
from tqdm.notebook import tqdm
pmid_relations=defaultdict(set)
for pmid,EntitySet in tqdm(pmid_EntitySet.items(),total=len(pmid_EntitySet)):
for relation,RelationId in DiseaseGene_RelationId.items():
if set(relation).issubset(EntitySet):
pmid_relations[pmid].add((relation,RelationId))
修改后:
from multiprocessing import Pool from collections import defaultdict from tqdm.notebook import tqdm def process(pmid_EntitySet_item): pmid, EntitySet = pmid_EntitySet_item relations = set() for relation, re_id in DiseaseGene_RelationId.items(): if set(relation).issubset(EntitySet): relations.add((relation, re_id)) return pmid, relations pmid_relations = defaultdict(set) with Pool() as pool: for pmid, relations in tqdm(pool.imap_unordered(process, pmid_EntitySet.items()), total=len(pmid_EntitySet)): pmid_relations[pmid] = relations
#参考文献
1.【Python】使用 multiprocessing.dummy 执行多线程任务https://blog.csdn.net/ns2250225/article/details/48755741
2. python3多进程阻塞与非阻塞快速理解https://blog.csdn.net/qq_41562377/article/details/105219269
3. Python多线程:Threading中join()函数的理解https://blog.csdn.net/xinghen1993/article/details/100691562
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。