为什么我的python脚本在创建线程时会分配自己的副本?

时间:2011-12-12 09:41:28

标签: python multithreading debugging fork

我有一个简单的python脚本,它调用6个线程,由于某种原因,它会创建这些线程并分叉自己的副本。当我尝试加入所有线程时,它会永远陷入困境。我该如何解决这个问题?

def backup_function():
    for todo_list in master_list:
        worker_thread = maint_tasker(todo_list)
        threadlist.append(worker_thread)        
        worker_thread.start()

for worker_done in threadlist:
    worker_done.join()

class maint_tasker (threading.Thread):
    def __init__(self,list1):
        threading.Thread.__init__(self)
        self.list1 = list1
    def run (self):
        self.result = Popen("do stuff here", executable="/bin/bash", stdout=PIPE, stderr=STDOUT, shell=True).stdout.read()
    def output(self):
        return self.result    

1 个答案:

答案 0 :(得分:3)

分叉是由popen调用完成的,而不是线程创建,因此似乎完全可以接受。

如果没有更多信息,无法调试join问题。当被问到is_alive()时,线程会返回什么?

编辑:混合线程和分支可能不好。请参阅下面评论中的this article和博客链接。