Python多处理重启应用程序

时间:2016-04-26 17:25:36

标签: python multithreading python-2.7 multiprocessing executable

我是python多处理的新手,遇到了一些看起来很奇怪的行为,但我想这是正常的。这是一个最小的工作代码:

import multiprocessing

print("Thread name: " + __name__)

def printfunc(text):
    print(text)

if __name__ == '__main__':
    multiprocessing.freeze_support()
    texts=["aaa","bbb"]
    pool = multiprocessing.Pool(2)
    result = pool.map(printfunc, texts)

    pool.close()

我从运行中获得的输出是:

Thread name: __main__
Thread name: __parents_main__
Thread name: __parents_main__
aaa
bbb

显然,多处理线程不仅执行printfunc函数,而且从头开始执行整个代码。显然,区分主线程和“子”线程的方法是if __name__ == '__main__':条件;主要帖子的名称是__main__,儿童名字是__parents_main__。但是对于我的工作,我需要冻结我的代码并创建Windows可执行文件,当我运行它时,所有线程都有名称__main__,这会产生问题。

有办法:

a)在调用Pool.map

之后,使应用程序不“重新启动”

b)如果不可能,如何正确冻结应用程序,以便线程有不同的名称(我使用cx_Freeze)?

c)如果这也是不可能的,那么如何以任何其他方式防止这种行为?

我使用的是python 2.7。

由于

0 个答案:

没有答案
相关问题