Потоки Python в C

Я пишу многопоточную программу на C. Перед созданием потоков глобальная среда Python инициализируется вызовом Py_Initialize () . Затем в каждом созданном потоке используется общая глобальная среда python, и каждый поток вызывает метод python с параметрами, преобразованными в C. Все работает хорошо, пока здесь.

Когда я использую time.sleep () в загруженных модулях Python программа C вызывает Ошибка сегментации . Кроме того, загруженный модуль python должен загрузить еще одну библиотеку C для продолжения работы. Я написал следующую глупую библиотеку счетчиков, чтобы проверить это:

# python part, call the counter function
lib = ctypes.cdll.LoadLibrary(libpycount.so)
for i in xrange(10):
    lib.count()
// C part, dummy countings
#include 
int counter = 1;
void
count() {
    printf("counter:%d \n", counter);
    counter++;
}

Я предполагаю, что это могло быть потому, что я неправильно управлял созданием сложных потоков. И я нашел потоков, созданных не Python в документе python.

Любые идеи или предложения?

8
задан alwinlin 20 July 2011 в 13:08
поделиться