Python pthread_detach模拟

时间:2013-01-05 18:38:13

标签: python pthreads detach

大家晚上好。我正在使用Python 2.7和线程模块编写多线程程序。这是一个代码示例:

# Importing myFunc function which will be run in the new thread
from src.functions import myFunc
# Importing a threading module
import threading
# Creating and running new thread initiated by our function
# and some parameters.
t = threading.Thread(target=myFunc, args=(1, 2, 3))
t.start()

我知道在C ++(POSIX线程库)中有一个pthread_detach()函数,它将正在运行的线程置于分离状态。它保证该函数在函数结束后将资源释放回系统。那么,Python中是否有这样的函数模拟?或者,也许,根本没有必要在Python中分离线程,并且线程占用的资源将在线程函数结束后自动释放?

我尝试搜索有关docs.python.org和Google的信息,但这种情况毫无结果。

1 个答案:

答案 0 :(得分:1)

早上好,每个人都去。实际上回答是'没有必要在Python中分离线程。这个回答是由来自there的同志 GaiveR 给我的。您只需要查看Python的源代码(thread_pthread.h):

long
PyThread_start_new_thread(void (*func)(void *), void *arg)
{
...
    status = pthread_create(&th,
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
                         &attrs,
#else
                         (pthread_attr_t*)NULL,
#endif
                         (void* (*)(void *))func,
                         (void *)arg
                         );

#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
    pthread_attr_destroy(&attrs);
#endif
    if (status != 0)
    return -1;

    pthread_detach(th);
...
}