有什么办法可以简化一个python多线程的代码,求帮助,刚开始学习
def main1():
try:
start_tem_filling(list1[0][0], list1[0][1], list1[0][2], list1[0][3])
except Exception:
pass
def main2():
try:
start_tem_filling(list1[1][0], list1[1][1], list1[1][2], list1[1][3])
except Exception:
pass
def main3():
try:
start_tem_filling(list1[2][0], list1[2][1], list1[2][2], list1[2][3])
except Exception:
pass
def main4():
try:
start_tem_filling(list1[3][0], list1[3][1], list1[3][2], list1[3][3])
except Exception:
pass
def main5():
try:
start_tem_filling(list1[4][0], list1[4][1], list1[4][2], list1[4][3])
except Exception:
pass
def main6():
try:
start_tem_filling(list1[5][0], list1[5][1], list1[5][2], list1[5][3])
except Exception:
pass
def main7():
try:
start_tem_filling(list1[6][0], list1[6][1], list1[6][2], list1[6][3])
except Exception:
pass
def main8():
try:
start_tem_filling(list1[7][0], list1[7][1], list1[7][2], list1[7][3])
except Exception:
pass
def main9():
try:
start_tem_filling(list1[8][0], list1[8][1], list1[8][2], list1[8][3])
except Exception:
pass
def main10():
try:
start_tem_filling(list1[9][0], list1[9][1], list1[9][2], list1[9][3])
except Exception:
pass
if __name__ == '__main__':
list2 = [main1, main2, main3, main4, main5, main6, main7, main8, main9, main10]
try:
for i in list2:
multiprocessing.Process(target=i).start()
time.sleep(3)
except Exception:
pass
可以跑得起来
想用一个for循环去简化上面重复定义的函数
简化这多线程的代码
你定义的main函数内容都一样,只是参数不同,为什么不在Process里指定参数呢?这样就只需要一个函数了
比如这样:
def main1(i):
try:
start_tem_filling(list1[i][0], list1[i][1], list1[i][2], list1[i][3])
except Exception:
pass
import multiprocessing
import time
if __name__ == '__main__':
try:
for i in range(10):
multiprocessing.Process(target=main1,args=(i,)).start()
time.sleep(3)
except Exception:
pass
使用redis队列框架,例如huey就会变得异常简单,主程序只是发送参数而已
或者不用队列,直接简单改下就行了
你把start_tem_filling干嘛又封装到main-x函数里头,画蛇添足了,直接每个线程给该函数传参数就可以了