And*_*ndy 5 python multithreading multiprocessing
我有一组 60 个对象,每个对象我都想拥有自己的threading.Thread. 由于 Python 的锁定和诸如此类的原因,为了进一步分解这一点,我想生成子进程(使用multiprocessing.Process),并在Threads每个Process. 我将我的对象分解成二维list,使它们更容易循环,这样 obj[] 索引代表Process数字,并且 obj[][] 中的每个元素都是我正在使用的对象之一 as Threads。所以这里是细分:
# break the objects out into my 2D list
obj= []
for i in all_obj:
if len(obj) == 0 or len(obj[len(obj)-1]) > 5:
obj.append([])
obj[len(obj)-1].append(i)
# spawn processes
processes = []
for i in obj:
processes.append(Process(target=proc_run,args=(i))
processes[len(processes)-1].start()
# process target
def proc_run(my_objs):
threads = []
for ad in my_objs:
threads.append(Thread(target=thread_run,args=(ad))
threads[len(threads)-1].start()
# thread target
def thread_run(my_obj):
for i in range(1,21):
## do some stuff with the object here
pass
logging.info("Thread for object <%s> finished."%(my_obj.prop))
Run Code Online (Sandbox Code Playgroud)
问题是线程实际上并没有产生,除非我join()在start()调用后添加。由于这消除了我对多线程的渴望(我可以只使用for循环并完成相同的事情),我不完全确定该怎么做。
当涉及到这个线程问题时,我完全是个菜鸟,所以你的答案越愚蠢,所有参与者就越容易。谢谢。